Несколько необычное использование - но для которого я действительно ценю существование нулевого оператора - это когда у меня есть два условия и два действия, которые я нахожу наиболее естественным образом выразить так:
if(condition1)
/* do nothing */ ;
else if(condition2)
do_something;
else do_something_else;
Часто condition1
проверяет, что все в порядке, но если это не так, condition2
различает два различных действия исключения do_something
и do_something_else
.
Конечно, это не единственный способ выразить это. Можно было бы повторить condition1
:
if(!condition1 && condition2)
do_something;
else if(!condition1)
do_something_else;
Но это кажется неполноценным, потому что оно повторяется condition1
. Или можно использовать вложенные операторы if
:
if(!condition1) {
if(condition2)
do_something;
else do_something_else;
}
Но, конечно, вложенные if
операторы, как известно, также склонны к чрезмерному усложнению и запутыванию. Поэтому я часто предпочитаю первую версию с нулевым оператором.