以这种方式订购if语句的原因是什么?

问题描述:

为什么形式if之类的语句...以这种方式订购if语句的原因是什么?

if (null === $this->foo){...} 
if (0 === count($bar)){...} 

,而不是...

if ($this->foo === null){...} 
if (count($bar) === 0){...} 

我已经在许多程序员,我尊重项目的代码,注意到这一点,但我不不知道他们为什么这样做。我这样做的第二种方式,因为它遵循我的想法“如果这个值与null相同,那么...”而询问“如果null与此值相同...”对我来说似乎不那么明显。所以为什么?

+5

它被称为“尤达说”;) – KingCrunch 2010-12-02 00:25:56

+0

@KingCrunch我很喜欢标签“尤达条件” – tobyodavies 2010-12-02 01:05:34

它旨在确保您不会意外地将if(this-> foo = null)而不是double ==。

这是PHP将自动为您赶上

if (null = $foo) {} 

一个错误,而这可能是一个错误的(尽管它可能是蓄意的,有时是有用的)

if ($foo = null) {} 

所以,通过订购您在这种情况下,您可以保护自己免于意外分配值而不是比较它们。