Цитата:
скорее всего неточность в руководстве.
И все-таки, я считаю, что в руководстве сказано именно то, о чем в нем хотели сказать. Вся суть в терминологии. Если кто-нибудь здесь приведет однозначное определение понятия "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?