相关问题:使用短路评估的好处,为什么语言不使用短路评估?,有人可以解释一下这行代码吗?(逻辑和赋值运算符)
关于使用短路代码的语言的好处存在一些问题,但我想知道对程序员有什么好处?只是它可以让代码更简洁一点吗?还是有性能原因?
我不是在问无论如何都需要评估两个实体的情况,例如:
if($user->auth() AND $model->valid()){
$model->save();
}
对我来说,推理很清楚 - 因为两者都需要为真,如果用户无法保存数据,您可以跳过成本更高的模型验证。
这也有一个(对我来说)明显的目的:
if(is_string($userid) AND strlen($userid) > 10){
//do something
};
strlen()
因为使用非字符串值调用是不明智的。
我想知道的是当它不影响任何其他语句时使用短路代码。例如,从 Zend Application 默认索引页面:
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
这可能是:
if(!defined('APPLICATION_PATH')){
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
}
甚至作为一个单一的声明:
if(!defined('APPLICATION_PATH'))
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
那么为什么要使用短路代码呢?只是为了使用逻辑运算符代替控制结构的“酷”因素?合并嵌套的 if 语句?因为它更快?