Показать сообщение отдельно
Старый 13.01.2004, 15:43   #15  
Ruff
Гость
 
n/a
Цитата:
скорее всего неточность в руководстве.
И все-таки, я считаю, что в руководстве сказано именно то, о чем в нем хотели сказать. Вся суть в терминологии. Если кто-нибудь здесь приведет однозначное определение понятия "dead code", тогда и можно будет ответить на вопрос о неточности.

А я пока продолжу свои мысли по этому поводу.

1. Обратите внимание на примеры, приведенные в Best Practices. Dead code там выделен красным цветом. И в нашем примере - это именно оператор else с открывающей фигурной скобкой (я бы подкрасил еще и закрывающую скобку). Но не b++ и не return b.

2. Обратите внимание на текст, сопровождающий примеры в руководстве. В первых двух примерах (в которых dead кодом являются соответственно b++ и return a) ключевой фразой является ... is never reached (не будут достигнуты). Тогда как в третьем (рассматриваемом нами) примере ключевая фраза звучит по-другому: else is never "used". То есть, как я понимаю, код достижим, но является лишним. Или, я бы даже сказал "виртуально" не достижим (т.е. на более низком уровне - см. Ассемблер).

Из всего сказанного выше я бы сделал вывод о том, что "dead code" - это недостижимый или лишний, бессмысленный в данном контексте код.

Отвечая Юрию, работать будут оба варианта, причем абсолютно идентично, но присутствие в первом варианте оператора else - признак dead code. Вот и все.

Кстати, первые два примера тоже будут работать, просто в них есть операторы, которые не выполнятся. В третьем примере - это оператор else. Он и не выполнится, а не его тело.

PS: Что-то я много всего понаписал тут - обидно будет, если никто не ответит. Может, кто-то все-таки знает точное определение dead code?