使用和/或在条件中为了可读性而不是&& ||

时间:2011-04-19 16:23:13

标签: php operators

通常在我编写PHP时,我会构造这样的条件:

if(1 === $var1
   and 2 === $var2
   or 1 == $var3) {
   // do something here maybe
}

我认为这使得阅读更容易,更自然。 我知道当我使用Yodas时这可能是可笑的。

我在andor开头的每个条件都有的原因是因为它可以更容易在调试时对部分语句进行注释。

与“通常”||&&相比,这样做是否有任何不利之处?

2 个答案:

答案 0 :(得分:6)

orand ||&&没有相同的运算符优先级。这意味着表达式[a][b][a] and [b] != [a] && [b]的某些值。这可能会产生非明显的错误。

PHP operator precedence

请注意,一个优先级高于赋值,而另一个优先级高于赋值。这是一个微妙的差异,即使你理解它,其他开发人员阅读你的代码可能不会。因此,我个人建议仅使用 <{em> &&||

Ruby的运算符在这方面类似于PHP。 Jay Fields published a simple example of the difference

答案 1 :(得分:2)

PHP and&&之间,or||之间没有显着的功能差异。

它们之间的唯一区别是它们被视为不同的运算符,并且按运算符优先级的顺序具有不同的位置。如果你忽略用括号括起东西,这会对复杂操作的结果产生很大的影响。

出于这个原因,通常最好使用一种或其他类型的运算符,并坚持使用它,而不是在相同的代码库中混合使用它们(这对可读性来说也是一个好主意)。但是选择使用哪一对运算符是相当无关紧要的。

除此之外,它们基本上是相同的。

请参阅此处了解PHP运算符优先级:http://php.net/manual/en/language.operators.precedence.php

(请注意andor&&||表格中的不同位置