首页 > 解决方案 > 在复杂条件下避免过多的括号

问题描述

您是否认为臭代码使用括号来否定条件?如果是这样,那么正确的形式是什么?

前任:

    for(int i = 0; i < array.size(); i++) {
        test += "just a test";

        if (!(array.size() == i+1)) {
            test += ",";
        }
    }

逗号不应仅出现在最后一次迭代中

标签: syntax

解决方案


使用不等式运算符会更好,在这个例子中:

if (array.size() != i+1) {
    test += ",";
}

左侧和右侧在!=执行之前评估,因此如果array.size()返回10i设置为5然后array.size() != i+1评估为10 != 5+1or 10 != 6which return true。如果i设置为9,则array.size() != i+1计算结果为10 != 9+1or 10 != 10which 返回false

通常在引用将返回布尔值的方法时使用“非”运算符,并且需要测试条件的反转:

if (!form.validated()) {
    // Do something for not validated.
}

推荐阅读