我经常看到结构是否像这样编码:
if (true == a)
if (false == a)
为什么他们先把常数值放在而不是变量?如在这个例子中:
if (a == true)
if (b == true)
答案 0 :(得分:14)
这称为yoda语法或yoda条件。
它用于帮助防止意外分配。
如果您忘记了等号,则会失败
if(false = $a)
无法编译
if($a = true)
将true
的值分配给变量$a
并评估为true
Wordpress Coding Standards具体提到这一点:
if ( true == $the_force ) {
$victorious = you_will( $be );
}
进行逻辑比较时,始终将变量放在右侧 左边的边,常数或文字。
在上面的示例中,如果省略等号(承认它,它就会发生 即使对我们经验最丰富的人来说,你也会得到一个解析错误,因为 你不能分配像真的常数。如果声明是 另一种方式($ the_force = true),任务将是 完全有效,返回1,导致if语句评估为 是的,你可能会在一段时间内追逐那个bug。
有点奇怪,是的,阅读。习惯了,你会的。
答案 1 :(得分:-2)
这是YODA Style
编码
if (var a == true){
}
比
更安全 if (true == var a){
}
因为当您忘记第二个=
标记时,您将收到无效的分配错误,并且可以在编译时中捕获它。