是否在不良做法中转换if语句?

时间:2014-11-25 15:12:01

标签: if-statement

我记得被告知像if(10 == $myVariable)这样的if语句是一种不好的做法。但是,为什么这是一个不好的做法,它的名字是什么? (我可以隐约记得它有一个特定的名字)。

3 个答案:

答案 0 :(得分:11)

由于偶然的拼写错误,它的良好做法

if (10 = $myVariable)  

将无法编译为

if ($myVariable = 10)

将if语句设为true,并将$ myVariable设置为10

是一个相当容易制作,很难发现错误。

http://en.wikipedia.org/wiki/Yoda_conditions

答案 1 :(得分:4)

在访问null可能导致失败的语言(例如Java)中,这也是一种很好的做法。例如,即使myVariable为null

,以下内容也是安全的
if ("foo".equals(myVariable)) {
    // Do something
}

以下内容将引发NullPointerException

if (myVariable.equals("foo")) {
    // Do something
}

如果您的编码标准要求变量首先出现,那么您的代码会因非空检查的要求而变得更加冗长:

if (myVariable != null && myVariable.equals("foo")) {
    // Do something
}

答案 2 :(得分:2)

根据Jeff Atwood博客a post上的Coding Horror,StackOverflow用户zneak将此称为 Yoda条件。描述如下:

  

使用if(constant == variable)代替if(variable == constant),例如if(4 == foo)。因为它就像是说“如果蓝色是天空”或“如果高大就是男人”。

这是指星球大战人物Yodaalways talks backwards

正如exussumhis answer提到的那样,它有时不被视为不良做法,因为它可以避免拼写错误。