您是否认为使用臭味代码使用括号来否认这种情况?如果是这样,那么正确的格式是什么?
例如:
for(int i = 0; i < array.size(); i++) {
test += "just a test";
if (!(array.size() == i+1)) {
test += ",";
}
}
逗号不仅应出现在最后一次迭代中
答案 0 :(得分:1)
在本例中,使用不等式运算符会更好:
if (array.size() != i+1) {
test += ",";
}
在执行!=
之前先评估左侧和右侧,因此如果array.size()
返回10
且i
设置为5
,则{ {1}}的计算结果为array.size() != i+1
或10 != 5+1
,它们返回10 != 6
。如果将true
设置为i
,则9
的计算结果为array.size() != i+1
或10 != 9+1
,它们返回10 != 10
。
通常,在引用将返回布尔值的方法时使用“ not”运算符,并且需要测试条件的逆项:
false
答案 1 :(得分:0)
特定于C#,这在某种程度上可能有用的一种边缘情况是否定is
运算符和模式匹配:
if (!(foo is Bar bar))
{
// Do something
}
除了特定于语言的细微差别外,更清晰的意图是遵循 not equal to
关系运算符,以了解您使用的是哪种语言:
/=
<>
~=
!=
NEQ
请注意,某些语言具有特殊的相等运算符,应根据要比较的对象使用它们。对于Javascript,您同时具有不等式(!=
)和非同一性(!==
),它们的行为不同。