在Java中与boolean常数进行显式比较是否不好(例如,如果(b == false))?

写不好吗:


if (b == false) //...


while (b != true) //...

是不是总是更好,而不是写:


if (!b) //...


while (!b) //...

大概在性能上没有区别(或存在什么区别?),但是您如何权衡两者之间的明确性,简洁性,清晰度,可读性等?


更新资料

为了限制主观性,我还要感谢权威编码风格指南中的所有引号,这些引号始终是更可取的或在何时使用。


注意:变量名称b仅用作示例ala foo和bar。


慕码人8056858
浏览 668回答 3
3回答

慕姐4208626

不一定坏,只是多余的。同样,实际的变量名也很重要。例如if (userIsAllowedToLogin),我更希望以上if (b),甚至更差if (flag)。关于性能问题,编译器会以任何方式对其进行优化。更新:关于权威资料,我在《Sun Coding Conventions》中找不到明确的内容,但是至少Checkstyle有一个SimplifyBooleanExpression模块会对此发出警告。

慕无忌1623718

您不应该使用第一种样式。我见过人们使用:if ( b == true )if ( b == false )我个人觉得很难阅读,但是可以通过。但是,这种样式的一个大问题是,它导致您显示了令人难以置信的违反直觉的示例:if ( b != true )if ( b != false )读者需要花费更多的精力来确定作者的意图。就我个人而言,我发现包括对true或false的显式比较是多余的,因此很难阅读,但这就是我。

ibeautiful

这完全是一个品味问题。我个人发现它的可读性比我if (!a) {低(编辑:对我来说),因此在以后维护代码时更容易出错,并且我已经转换为使用后一种形式。if (a == false) {基本上,我不喜欢为逻辑运算而不是单词(C与Pascal)选择符号,因为对我 a = 10 and not b = 20而言a == 10 && !(b==20),它比容易阅读,但这就是Java中的用法。任何赞成“ == false”方法的人都赞成“!” 显然,从来没有盯着代码太长时间,也没有错过那个感叹号。是的,您会遇到代码盲的情况。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java