Смежные вопросы : Преимущества использования оценки короткого замыкания , Почему язык НЕ использует оценку короткого замыкания? , Может кто-нибудь объяснить эта строка кода, пожалуйста? (Операторы логики и назначения)
Есть вопросы о преимуществах языка, использующего код короткого замыкания, но мне интересно, каковы преимущества для программиста? Просто ли это может сделать код немного более кратким? Или есть причины производительности?
Я не спрашиваю о ситуациях, когда в любом случае нужно оценивать две сущности, например:
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 заявления? Потому что это быстрее?