Gre*_*een 4 php if-statement isnull
检查Zend Framework发现他们以相反的方式执行所有变量检查:
public function setBootstrap($path, $class = null) {
if (null === $class) { // instead of if($class === null)
$class = 'Bootstrap';
}
Run Code Online (Sandbox Code Playgroud)
这样做的原因是什么?
这也适用于Java和C++编程吗?
有些人认为这有助于他们避免写一个单一的=(一个作业而不是相等的比较)
我相信这样做的好处远远小于可读性的损失(因此可维护性!)
不测试代码的人可能会依赖这种技巧.并且回答你的问题,是的,它适用于从C语言中获取语法的大多数语言 - 我的意思是合适的,不推荐.
这种风格被称为尤达条件.
基本上它与common($variable === value)样式具有相同的行为,但有一个优点:
编译器会引发的情况下,你写了一个错误=,而不是==或===错误.由于您无法重新分配常量(在示例中为null值),开发人员会立即识别由于编译器错误/警告而导致的错误,因此可以省去耗时的错误搜索.
所以下面的行是有效的,虽然它不会显示(大多数时候)预期的行为:
if ( $var = null ) { echo 'test'; }
Run Code Online (Sandbox Code Playgroud)
虽然这里显示错误:
if ( null = $var ) { echo 'test'; }
Run Code Online (Sandbox Code Playgroud)
然而,一个主要缺点是这种风格失去了可读性.但这取决于代码的读者和其他一些编码风格指南.