pol*_*nts 72 java boolean coding-style
写不好
if (b == false) //...
while (b != true) //...
Run Code Online (Sandbox Code Playgroud)
是不是总是更好,而不是写:
if (!b) //...
while (!b) //...
Run Code Online (Sandbox Code Playgroud)
据推测,性能没有差异(或者存在?),但是如何衡量两者之间的显性,简洁性,清晰度,可读性等?
为了限制主观性,我还要感谢来自权威编码风格指南的任何引用,这些引用始终是优选的,或者在何时使用.
注意:变量名称b仅用作示例,ala foo和bar.
Bal*_*usC 66
它不一定是坏的,它只是多余的.此外,实际的变量名称权重很多.我更喜欢if (userIsAllowedToLogin)上面的例子,if (b)甚至更糟if (flag).
至于性能问题,编译器会以任何方式优化它.
更新:至于权威来源,我在" 太阳编码约定"中找不到明确的内容,但至少Checkstyle有一个SimplifyBooleanExpression模块会对此发出警告.
Tho*_*mas 47
你不应该使用第一种风格.我见过人们使用:
if ( b == true )if ( b == false )我个人觉得很难阅读,但它是可以接受的.但是,我对这种风格的一个大问题是,它会导致你展示的令人难以置信的反直觉的例子:
if ( b != true )if ( b != false )为了确定作者的意图,读者需要付出更多努力.就个人而言,我发现包括对真或假的明确比较是多余的,因此更难阅读,但那就是我.
Tho*_*sen 34
这很有趣.
亲自我发现if (!a) {是少了很多可读(编辑:我)比if (a == false) {,并因此更容易出错以后维护代码时,我已经转换为使用后者的形式.
基本上我不喜欢逻辑运算的符号选择而不是单词(C对Pascal),因为对我来说 a = 10 and not b = 20读取比a == 10 && !(b==20)这更容易,但这就是它在Java中的方式.
任何将"== false"方法置于"!"状态的人 显然从来没有长时间盯着代码而错过了感叹号.是的,你可以得到代码盲.
Ala*_*ore 25
你不应该使用第一种风格的首要原因是因为这两种风格都是有效的:
if (b = false) //...
while (b = true) //...
Run Code Online (Sandbox Code Playgroud)
也就是说,如果您不小心遗漏了一个字符,则创建一个赋值而不是比较.赋值表达式的计算结果为已分配的值,所以上述的第一条语句分配值false到b和计算结果为false.第二个分配true给b,所以它总是评估true,无论你b在循环内做什么.
Mic*_*zek 11
除了初学者编写的代码外,我从未见过前者; 它始终是后者,我认为没有人真正被它迷惑.另一方面,我认为
int x;
...
if(x) //...
Run Code Online (Sandbox Code Playgroud)
VS
if(x != 0) //...
Run Code Online (Sandbox Code Playgroud)
更值得商榷,在这种情况下,我更喜欢第二种
恕我直言,我想如果你只是将bool变量名称作为前缀"Is",它将是不言而喻的,更有意义然后,你可以删除显式比较true或false
例:
isEdited // use IsEdited in case of property names
isAuthorized // use IsAuthorized in case of property names
Run Code Online (Sandbox Code Playgroud)
等等
| 归档时间: |
|
| 查看次数: |
24232 次 |
| 最近记录: |