' if '语句的奇数符号

Odd notation for `if` statement

本文关键字:符号 语句 if      更新时间:2023-10-16

我正在查看一些遗留代码,其中我遇到了以下if语句

if (!(foo == bar)){
    // lots of code here
}

相比,写这个有什么好处?
if (foo != bar){
}

如果相关,代码库为c++

它们应该是等价的,对于普通的旧数据类型它们当然是等价的,但是如果作者(非常规地)为==而不是!=提供了重载操作符,那么第二种写法将不可用。

为了可读性,我想我更愿意看到

if (foo == bar){
    // do nothing
} else {
    // lots of code here
}

,尽管最清晰的方法是调整代码库以提供!=操作符,并让您采用编写此代码的第二种方法。

类型(模板参数)的需求(概念)可能包括EqualityComparable,但不包括NotEqualityComparable(它不存在如http://en.cppreference.com/w/cpp/concept中列出的库概念)。

LessThanComparable概念与此类似:c++算法不需要大于的概念(这是多余的)。