小编jas*_*ray的帖子

语义差异实用程序

我试图找到一些语义差异/合并实用程序的好例子.比较源代码文件的传统范例通过比较行和字符来工作..但是有没有任何实用程序(对于任何语言)在比较文件时实际考虑代码结构

例如,现有的差异程序将报告"在第125行的字符2处找到的差异.文件x包含void,其中文件y包含bool".一个专门的工具应该能够报告"返回类型的方法doSomething()从void更改为bool".

我认为这种类型的语义信息实际上是用户在比较代码时所寻求的,并且应该是下一代编程工具的目标.可用工具中是否有这方面的例子?

language-agnostic diff semantics

105
推荐指数
5
解决办法
1万
查看次数

你如何构建比较函数?

我经常遇到情况,特别是在C++中进行排序,我在比较一系列字段以比较更大的结构.一个简化的例子:

struct Car{
    Manufacturer make;
    ModelName model;
    Year year;
};

bool carLessThanComparator( const Car & car1, const Car & car2 ){
    if( car1.make < car2.make ){
        return true;
    }else if( car1.make == car2.make ){
        if( car1.model < car2.model ){
            return true;
        }else if( car1.model == car2.model ){
            if( car1.year < car2.year ){
                return true;
            }
        }
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

我的本能方法似乎很麻烦,特别是对于超过3个领域.你将如何在C++中构建这一系列的比较?其他语言是否提供更简洁或优雅的语法?

c++ language-features coding-style lexicographic stdtuple

4
推荐指数
1
解决办法
1769
查看次数