Tim*_*tle 5 coding-style short-circuiting code-structure
相关问题:使用短路评估的好处,为什么语言不能使用短路评估?,有人可以解释这行代码吗?(逻辑和分配运营商)
关于使用短路代码的语言的好处有疑问,但我想知道程序员有什么好处?只是它可以使代码更简洁一点吗?还是有性能原因?
我不是在询问有关两个实体需要进行评估的情况,例如:
if($user->auth() AND $model->valid()){
$model->save();
}
Run Code Online (Sandbox Code Playgroud)
对我而言,原因很清楚 - 既然两者都必须成立,那么如果用户无法保存数据,您可以跳过更昂贵的模型验证.
这对我来说也有明显的目的:
if(is_string($userid) AND strlen($userid) > 10){
//do something
};
Run Code Online (Sandbox Code Playgroud)
因为strlen()使用非字符串值调用是不明智的.
我想知道的是当它不影响任何其他语句时使用短路代码.例如,从Zend Application默认索引页面:
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
Run Code Online (Sandbox Code Playgroud)
这可能是:
if(!defined('APPLICATION_PATH')){
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
}
Run Code Online (Sandbox Code Playgroud)
或者甚至作为一个声明:
if(!defined('APPLICATION_PATH'))
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
Run Code Online (Sandbox Code Playgroud)
那么为什么要使用短路代码呢?仅仅因为使用逻辑运算符代替控制结构的"酷"因素?要合并嵌套的if语句?因为它更快?
对于程序员来说,较不详细的语法相对于其他更详细的语法的好处可以是:
现在我只讨论不太冗长的语法在任何方面都不是棘手或聪明的,只是相同的公认的做法,但字符更少。
通常,当您在一种语言中看到特定的结构时,您希望您使用的语言也能具有这种结构,但之前甚至不一定意识到这一点。我脑海中浮现出一些例子: