我记得被告知像if(10 == $myVariable)
这样的if语句是一种不好的做法。但是,为什么这是一个不好的做法,它的名字是什么? (我可以隐约记得它有一个特定的名字)。
答案 0 :(得分:11)
由于偶然的拼写错误,它的良好做法
if (10 = $myVariable)
将无法编译为
if ($myVariable = 10)
将if语句设为true,并将$ myVariable设置为10
是一个相当容易制作,很难发现错误。
答案 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)
。因为它就像是说“如果蓝色是天空”或“如果高大就是男人”。
这是指星球大战人物Yoda,always talks backwards。
正如exussum中his answer提到的那样,它有时不被视为不良做法,因为它可以避免拼写错误。