【发布时间】:2021-02-20 11:44:12
【问题描述】:
通常很容易在您的程序中发现不必要的括号,但我对在 if 语句中使用括号有点困惑。
public class TestClass {
void method(String sectionName) {
if ("Content".equals(sectionName) || "Overview".equals(sectionName)
// suppression list
|| (!"AbbreviationAsWordInName".equals(sectionName)
&& !"AbstractClassName".equals(sectionName)
)) {
System.out.println();
}
}
}
我觉得第 5 行(!"AbbreviationAsWordInName" 之前)的括号是不必要的。现在的问题是,通常我可以测试代码然后得出结论,但现在我正在修复开源程序中的一些错误,而该插件又被许多其他程序使用,所以我有点困惑。
更多示例-
if (active == (forward ? past : future) &&
((increasing && switchOnIncrease) || (!increasing && switchOnDecrease)))
在上面的例子中,我觉得第 2 行有不必要的括号。
另一个例子-
else if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) {}
我觉得上面的例子中多了一个括号,应该是-
else if (c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F') {}
请帮我提供一个可靠的解决方案。
【问题讨论】:
-
如果你想清除它,你必须看看这个:docs.oracle.com/javase/tutorial/java/nutsandbolts/… 并记住运算符的优先级。
-
括号越多越好。为了清楚起见,请保留它们。
-
如果有多余的括号,代码将不会通过 CI。
-
@JayC667 而且这个功能是可配置的,你可以根据需要抑制一些功能。
-
当您检查优先级时,
&&首先出现,因此您不需要括号。要做的就是做一个测试所有条件的测试。
标签: java parentheses