C++ 'if'语句的奇数表示法
我正在浏览一些遗留代码,其中遇到了以下C++ 'if'语句的奇数表示法,c++,C++,我正在浏览一些遗留代码,其中遇到了以下if语句 if (!(foo == bar)){ // lots of code here } 写在上面有什么好处 if (foo != bar){ } 如果是相关的,代码库是C++。 < P>它们应该是等价的,对于它们来说是普通的老数据类型,但是如果作者(un惯例)提供了一个重载的运算符用于=< /COD>而不是为!代码>则第二种编写方法将不适用于您 不过,为了可读性,我想我更愿意看到 if (foo == bar){ // do no
if
语句
if (!(foo == bar)){
// lots of code here
}
写在上面有什么好处
if (foo != bar){
}
如果是相关的,代码库是C++。
< P>它们应该是等价的,对于它们来说是普通的老数据类型,但是如果作者(un惯例)提供了一个重载的运算符用于<代码>=< /COD>而不是为<代码>!代码>则第二种编写方法将不适用于您 不过,为了可读性,我想我更愿意看到if (foo == bar){
// do nothing
} else {
// lots of code here
}
尽管最清晰的方法是调整代码库以提供
=代码>运算符,您可以采用您编写此代码的第二种方式。对于普通的旧数据类型,它们应该是等效的,但如果作者(非常规地)为=
而不是提供了重载运算符,则它们肯定是等效的=代码>则第二种编写方法将不适用于您
不过,为了可读性,我想我更愿意看到
if (foo == bar){
// do nothing
} else {
// lots of code here
}
尽管最清晰的方法是调整代码库以提供=代码>运算符,并且您可以采用您编写此代码的第二种方式。类型(模板参数)的要求(概念)可能包括EqualityComparable
,但不包括NotEqualityComparable
(不存在中列出的库概念)
可比较的概念是相似的C++算法不需要大于概念(冗余)。
可比的概念是相似的:C++算法不需要比概念大(冗余)。< / P>一个非常冗长的方法,不做任何事情(实际上并没有提高可读性)。代码>(!(foo==bar))
对我来说就像一种“气味”。考虑到,我宁愿看看是否(!(foo==bar))
=代码>过载不存在。空如果块对我来说是一种气味:)一种非常冗长的无所事事的方式(并没有真正提高可读性),我确实将该部分限定为基于意见的<代码>(!(foo==bar))
对我来说就像一种“气味”。考虑到,我宁愿看看是否(!(foo==bar))
=代码>过载不存在。空如果块对我来说是一种气味:)欢迎使用SO。语言总是相关的。在一个糟糕的设计中,Foo
可以是一个重载了=
操作符的类,而不是=代码>一个…是的,我也这么认为。但这是一份新工作,我想我不能改变太多。我很好奇第二份工作是否会更快?第一个必须分别执行两个操作,即找出它是否相等,然后求反。第二,如果发现有点不同,可以停止比较。有人能帮忙澄清吗?@someone\u smiley:是的,多亏了第一次发现差异的“快攻”,不平等测试可以“快得多”。例如,想象一个大对象有一个“散列”字段,该字段是从所有其他字段计算出来的。如果散列值相等-您仍然需要检查所有内容。如果散列不相等,则它们是不同的。但是,您可以将==实现为!(!=),那又怎样,终极免费加速?否。在本例中,您已经看到它不是依赖于操作,而是依赖于数据。运算符==也可以在第一个差分时快速返回“false”。接线员!=在数据非常相似的情况下,仍然可以工作很长时间。欢迎访问。语言总是相关的。在一个糟糕的设计中,Foo
可以是一个重载了=
操作符的类,而不是=代码>一个…是的,我也这么认为。但这是一份新工作,我想我不能改变太多。我很好奇第二份工作是否会更快?第一个必须分别执行两个操作,即找出它是否相等,然后求反。第二,如果发现有点不同,可以停止比较。有人能帮忙澄清吗?@someone\u smiley:是的,多亏了第一次发现差异的“快攻”,不平等测试可以“快得多”。例如,想象一个大对象有一个“散列”字段,该字段是从所有其他字段计算出来的。如果散列值相等-您仍然需要检查所有内容。如果散列不相等,则它们是不同的。但是,您可以将==实现为!(!=),那又怎样,终极免费加速?否。在本例中,您已经看到它不是依赖于操作,而是依赖于数据。运算符==也可以在第一个差分时快速返回“false”。接线员!=当数据非常相似时,仍然可以工作很长时间。是的。这大概是进行此类测试的唯一好理由(尽管即使如此,我也会认为更改模板的要求以添加不平等可比性通常是正确的做法。是的。这大概是进行此类测试的唯一好理由(尽管如此,我还是认为更改模板的要求以添加不平等比较通常是正确的做法。