Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему следует избегать использование оператора goto?

Алексей Мастер (2093), закрыт 13 лет назад
Лучший ответ
Axel Мастер (1926) 13 лет назад
Не следует избегать. Следует не злоупотреблять его использованием.

Основная критика данного оператора - при его использовании код теряет так называемую блочность.
То есть, любая часть программы разделена на блоки, ограниченные какими-либо операторами for-next begin-end repeat-until if-endif в паскале и бейсикоподобных или {фигурные скобки} в сиподобных. И визуально всё это воспринимается, как отдельные куски программы, в рамках которых идёт выполнение алгоритма. GOTO позволяет совершить безусловных переход из одного блока в другой, в результате чего код уже нельзя видеть, как нормальную структуру. Чрезмерное использование GOTO превращает код в так называмое "спагетти", когда сложно понять, откуда куда идёт выполнение.

Однако, это не значит, что использовать данный оператор вообще запрещено (это уже фанатизм) , можно столкнуться с тем, что его использование как раз таки сделает код более читаемым.

Например, есть три вложенных цикла, требуется при выполнении какого-то условия в самом нижнем цикле сделать выход из всех трёх, но без вынесения в процедуру (скажем, поиск первого нулевого элемента в трёхмерном массиве) . Без GOTO потребуется заводить переменную "флаг", для того чтобы последовательно выйти из одного цикла, потом из другого, потом из третьего, что выйдет в 5 строк кода и кучу проверок этого флага в каждом цикле при каждой итерации. Использование одного GOTO сократит решение до одной строки и проверок только в одном цикле. Читабельность код от этого не потеряет, скорее наоборот, есть одно чёткое условие и метка, визуально это воспринимается легче, чем 3 условия, раскинутые по разным циклам. Пример не идеальный, со многими "если", но на то он и пример.

Так что, именно "избегать" не следует. Следует продумывать в каждом случае, оправдает ли себя его применение и не ухудшит ли это визуальное восприятие кода.
Остальные ответы
fallen down Мудрец (19686) 13 лет назад
плохой стиль, всегда можно по другому сделать, если нельзя никак иначе - значит дерьмовый алгоритм . Ну а вообще сам использовал его когда учился ток так
Martinka Профи (595) 13 лет назад
много нужно помнить при его использовании....
Johny Depp Гуру (3417) 13 лет назад
Эта конструкция устарела, и сейчас поддерживается для обратной совместимости со старинными прогами.
Похожие вопросы