在 Java 中显式地与布尔常量进行比较是否不好,例如 if (b == false)?

新手上路,请多包涵

写是不是很糟糕:

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

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

写成这样 总是 更好吗:

 if (!b) //...

while (!b) //...

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

更新

为了限制主观性,我也很欣赏来自权威编码风格指南的任何引用,这些指南总是更可取或何时使用。


_注意_:变量名 b 仅用作示例,ala foobar

原文由 polygenelubricants 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 412
2 个回答

它不一定是坏的,它只是多余的。此外,实际的变量名很重要。例如,我更喜欢 if (userIsAllowedToLogin) 而不是 if (b) 甚至更糟 if (flag)

至于性能问题,编译器会以任何方式对其进行优化。

至于权威来源,我无法在最初由 Sun 编写的 Java 代码约定 中找到明确的内容,但至少 Checkstyle 有一个 SimplifyBooleanExpression 模块会对此发出警告。

原文由 BalusC 发布,翻译遵循 CC BY-SA 4.0 许可协议

你不应该使用第一种风格。我见过人们使用:

  • if ( b == true )
  • if ( b == false )

我个人觉得很难读,但还过得去。然而,我对这种风格的一个大问题是它会导致你展示的令人难以置信的反直觉的例子:

  • if ( b != true )
  • if ( b != false )

这需要读者更多的努力来确定作者的意图。就我个人而言,我发现包括对 true 或 false 的明确比较是多余的,因此更难阅读,但我就是这样。

原文由 Thomas 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题