If statement 切换if语句是否会改变坏习惯?

If statement 切换if语句是否会改变坏习惯?,if-statement,If Statement,我记得有人告诉我,像if(10==$myVariable)这样的if语句是一种不好的做法。然而,为什么这是一种不好的做法,它的名称是什么?(我模模糊糊地记得它有一个特定的名字)。它的良好实践是因为偶然的打字错误 if (10 = $myVariable) 将不编译为 if ($myVariable = 10) 将并使if语句为true,并将$myVariable设置为10 这是一个相当容易犯的错误,而且很难发现 根据杰夫·阿特伍德(Jeff Atwood)的博客,StackOverflo

我记得有人告诉我,像
if(10==$myVariable)
这样的if语句是一种不好的做法。然而,为什么这是一种不好的做法,它的名称是什么?(我模模糊糊地记得它有一个特定的名字)。

它的良好实践是因为偶然的打字错误

if (10 = $myVariable)  
将不编译为

if ($myVariable = 10)
将并使if语句为true,并将$myVariable设置为10

这是一个相当容易犯的错误,而且很难发现

根据杰夫·阿特伍德(Jeff Atwood)的博客,StackOverflow用户将此称为尤达条件。说明如下:

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

这是指《星球大战》中的角色,他是谁


正如中所提到的,它有时并不被视为一种不好的做法,因为它可以避免打字错误。

在访问
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
}

这是“Yoda条件”。事实上,一些人强烈认为这样做是一种很好的做法,以防您意外键入
(10=$myVariable)
,因为这会抛出一个与
($myVariable=10)
不同的错误。不过,这个问题主要是基于观点。这样做是为了防止意外赋值总是返回真值,如果您要删除其中一个
=
s.@d那么您怎么能说这是一个好的做法呢?如果你仔细阅读你引用的维基文章,你也会看到批评和缺点。所以这确实是一个基于意见的答案,不是很公正。我同意这是一个选择,但大多数基于“良好实践”的问题都是。例如,在编程时使用空格会给文件增加不必要的字节(批评和缺点),尽管我不知道有任何不使用空格的维护代码。一个人的好习惯总是另一个人的坏习惯。想想看,高尔夫程序员使用空格绝对是一个不利因素。我同意你的看法,但你不应该至少也提到那些批评者吗?所以任何人都可以根据事实而不是其他人的意见做出自己的决定?只是一个建议,因为在你的回答中,我看不出这只是一个意见。作为一名读者,我认为如果把批评家们排除在外,这将是一个严峻的事实。