関連する質問:短絡評価を使用する利点、言語が短絡評価を使用しないのはなぜですか? 、誰かがこのコード行を説明できますか? (論理演算子と代入演算子)
短絡コードを使用する言語の利点について質問がありますが、プログラマーにとっての利点は何ですか? コードをもう少し簡潔にすることができるというだけですか? それともパフォーマンス上の理由がありますか?
とにかく 2 つのエンティティを評価する必要がある状況については質問していません。たとえば、次のようになります。
if($user->auth() AND $model->valid()){
$model->save();
}
私には、そこにある理由は明らかです。両方が真である必要があるため、ユーザーがデータを保存できない場合は、よりコストのかかるモデル検証をスキップできます。
これには(私にとって)明らかな目的もあります。
if(is_string($userid) AND strlen($userid) > 10){
//do something
};
strlen()
文字列以外の値で呼び出すのは賢明ではないためです。
私が疑問に思っているのは、他のステートメントに影響を与えない場合の短絡コードの使用です。たとえば、Zend アプリケーションのデフォルトのインデックス ページから:
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 ステートメントを統合するには? 速いから?