【问题标题】:Good practice : compare a value with a boolean?好的做法:将值与布尔值进行比较?
【发布时间】:2012-09-11 21:33:22
【问题描述】:

大多数时候,我更喜欢这样写:

if(isWelcome() == true){}
if(isWelcome() == false){}

而不是这个

if(isWelcome()){}
if(!isWelcome()){}

因为我觉得它更容易阅读(但我明白它没有意义)。

我想知道是否有关于这种做法的共同协议。大多数开发人员做什么?而且我想知道编译器是否正在做额外的比较,或者它是否理解它是无用的。

【问题讨论】:

  • 我问一个一般情况的问题。可以是 Java、C# 等。
  • 这个问题有点主观,在 Programmer.SE 上可能会更好

标签: if-statement boolean code-readability


【解决方案1】:

可读性很重要,添加单词并不总能提高可读性。虽然这

if(isWelcome() == false){}

可能比这更具可读性

if(!isWelcome()){}

对于不熟悉什么的人!确实,这个

if(isWelcome()){}

实际上比这个更具可读性

if(isWelcome() == true){}

因为现在您已经引入了没有信息价值的“干扰词”,并增加了您的眼睛需要扫描以了解正在发生的事情的区域。您应该争取完全传达程序员意图的最少代码。

要真正回答您的问题,我会说大多数程序员会使用较短的版本。没有经验的程序员倾向于使用“冗长”的版本。

【讨论】:

  • 我同意“真实”的形式。但是对于虚假的形式,是只有我还是“!”角色很容易错过,即使我们很熟悉?
  • 是的,因为您提供的示例中没有使用空格。如果在 if 和条件之间添加一个空格,它会变得更加明显。您甚至可以在内部表达式两侧用空格填充,现在您不能错过 !,并且您在提高可读性的同时保持代码最少。
【解决方案2】:

如果你使用像 Resharper 这样的工具,你会得到一个提示,使用 isWelcome() == true 是多余的。 编译器可以选择优化比较,所以我不会太担心。

【讨论】:

    猜你喜欢
    • 2020-06-04
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    相关资源
    最近更新 更多