syntax - 在复杂条件下避免过多的括号
问题描述
您是否认为臭代码使用括号来否定条件?如果是这样,那么正确的形式是什么?
前任:
for(int i = 0; i < array.size(); i++) {
test += "just a test";
if (!(array.size() == i+1)) {
test += ",";
}
}
逗号不应仅出现在最后一次迭代中
解决方案
使用不等式运算符会更好,在这个例子中:
if (array.size() != i+1) {
test += ",";
}
左侧和右侧在!=
执行之前评估,因此如果array.size()
返回10
并i
设置为5
然后array.size() != i+1
评估为10 != 5+1
or 10 != 6
which return true
。如果i
设置为9
,则array.size() != i+1
计算结果为10 != 9+1
or 10 != 10
which 返回false
。
通常在引用将返回布尔值的方法时使用“非”运算符,并且需要测试条件的反转:
if (!form.validated()) {
// Do something for not validated.
}
推荐阅读
- abap - 通知:BTPLN vs TPLNR
- c++ - 如何通过boost python在运行时将成员添加到嵌入式类?
- java - Java:动态变量响应为 JSON
- documentum6.5 - 一次我们可以使用 Documentum 更新 DQL 查询更新多少行?
- javascript - 打字稿:使用具有不同类型的同一类
- python - 自动完成-python 无法找到 python 二进制文件
- asp.net-mvc - 不要让用户名唯一的 asp.net 身份
- java - Java8:在 Collectors.toMap(..) 中使用 Function::identity 会产生参数不匹配错误
- angular - Angular Universal API CALL,为少数属性提供数据为空
- android - 上滑动画无法正常工作