То, что вы описываете, называется «оценкой короткого замыкания».
Большинство языков работают таким образом, включая PHP, поэтому они будут оценивать выражение до тех пор, пока не будут уверены в результате, а затем останавливаются, поэтому остаток выражения не будет оцениваться.
Как вы говорите, это самый эффективный подход.
Тем не менее, он потенциально может бросить гаечный ключ в работу для неопытных программистов, которые могут попробовать что-то вроде этого:
if(doFirstProcess() && doSecondProcess() {
print "both processes succeeded";
}
В этом случае программист ожидает вызова обеих функций, но если первая возвращает false
, то вторая не будет выполнена, так как программа уже знает достаточно, чтобы быть уверенной в конечном результате выражение, поэтому оно замыкает оставшуюся часть выражения.
Есть несколько языков, которые не выполняют оценку короткого замыкания. VB6 был одним из примеров (в те времена). Я не знаю о VB.Net, но, поскольку он эволюционировал из VB6, я подозреваю, что он будет похожим. Но кроме этого, все другие языки, с которыми я работал, использовали оценку короткого замыкания, включая PHP.
Здесь в руководстве по PHP есть раздел об этом: http://www.php.net/manual/en/language.operators.logical.php
А вы можете прочитать больше об оценке короткого замыкания здесь: http://en.wikipedia.org/wiki/Short-circuit_evaluation
Надеюсь, это поможет.