我一直认为括号提高了可读性,但在我的教科书中有这样一句话:使用括号会极大地降低程序的可读性。有人有例子吗?
我可以找到很多反例lack括号降低了可读性,但我能想到的作者可能的意思的唯一例子是这样的:
if(((a == null) || (!(a.isSomething()))) && ((b == null) || (!(b.isSomething()))))
{
// do some stuff
}
在上面的情况下,方法调用周围的 () 是不必要的,这种代码may受益于将项分解为变量。由于条件中间有所有这些近括号,因此很难准确地看出什么与什么分组。
boolean aIsNotSomething = (a == null) || !a.isSomething(); // parens for readability
boolean bIsNotSomething = (b == null) || !b.isSomething(); // ditto
if(aIsNotSomething && bIsNotSomething)
{
// do some stuff
}
我认为上面的内容更具可读性,但这只是个人意见。这可能就是作者所要表达的意思。
括号的一些好用处:
- 在没有括号的情况下行为发生变化时区分操作顺序
- 当行为不受影响时区分操作顺序,但不太了解绑定规则的人会阅读您的代码。好公民统治。
- 指示括号内的表达式在用于更大的表达式之前应先求值:
System.out.println("The answer is " + (a + b));
括号的使用可能会令人困惑:
- 在它不可能有其他含义的地方,比如在前面
a.isSomething()
多于。在Java中,如果a
is an Object
, !a
本身就是一个错误,所以很明显!a.isSomething()
必须否定方法调用的返回值。
- 将大量条件或表达式连接在一起,如果分解这些条件或表达式会更清晰。如上面的代码示例所示,将大的括号语句分解成较小的块可以使代码在调试器中更直接地单步执行,并且如果稍后在代码中需要条件/值,则不会结束重复表达并做两次工作。不过,这是主观的,如果您只在一处使用表达式并且调试器无论如何都会向您显示中间计算的表达式,那么这显然毫无意义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)