К сожалению, не нашел точного определения "dead code" в руководстве. Может, кто-нибудь подскажет?
Поэтому решил посмотреть на указанный пример с "низкоуровневой" точки зрения. Вспоминается студенческий курсовой по проектированию трансляторов. Ниже приведен грубый перевод указанных фрагментов кода на Ассемблер, как его сделал бы компилятор. Смешно, конечно, проводить такие аналогии, но кое-что интересное в этом можно заметить.
1-Й вариант:
Код:
TST AX, AX
JZ L01
// начало блока if
MOV RESULT, AX
RET
// конец блока if
JMP L02 // эта команда НИКОГДА не выполнится !!!
L01:
// начало блока else
INC BX
MOV RESULT, BX
RET
// конец блока else
L02:
...
2-Й вариант
Код:
TST AX, AX
JZ L01
// начало блока if
MOV RESULT, AX
RET
// конец блока if
L01:
INC BX
MOV RESULT, BX
RET
Хотя, вцелом, согласен с Юрием насчет строгости и интуитивности...