为什么在if条件下常数第一

Why Constant first in an if condition

本文关键字:常数第 条件下 if 为什么      更新时间:2023-09-26

我经常看到结构是否像这样编码:

if (true == a)
if (false == a)

为什么他们把常数值放在第一位,而不是变量?如本例所示:

if (a == true)
if (b == true)

这被称为yoda语法或yoda条件。

它用于帮助防止意外分配。

如果你忘记了等号,就会失败

if(false = $a)编译失败

if($a = true)true的值分配给变量$a并计算为true

Wordpress编码标准特别提到了这一点:

if ( true == $the_force ) {
    $victorious = you_will( $be );
}

进行逻辑比较时,始终将变量放在右边左边是常量或文字。

在上面的例子中,如果你省略了一个等号(承认它,它就会发生即使对我们中经验最丰富的人来说),你也会得到一个解析错误,因为你不能给true这样的常数赋值。如果声明是反之($the_force=true),则赋值为完全有效,返回1,导致if语句的求值为是的,你可能会追逐那个bug一段时间。

读起来有点奇怪。习惯它,你会的。

这是编码的YODA Style的一个例子

if (var a == true){
 }

不如安全

 if (true == var a){
 }

因为当您忘记第二个=标记时,您将得到一个无效的赋值错误,并且可以在编译时捕获它。