Не следует избегать. Следует не злоупотреблять его использованием.
Основная критика данного оператора - при его использовании код теряет так называемую блочность.
То есть, любая часть программы разделена на блоки, ограниченные какими-либо операторами for-next begin-end repeat-until if-endif в паскале и бейсикоподобных или {фигурные скобки} в сиподобных. И визуально всё это воспринимается, как отдельные куски программы, в рамках которых идёт выполнение алгоритма. GOTO позволяет совершить безусловных переход из одного блока в другой, в результате чего код уже нельзя видеть, как нормальную структуру. Чрезмерное использование GOTO превращает код в так называмое "спагетти", когда сложно понять, откуда куда идёт выполнение.
Однако, это не значит, что использовать данный оператор вообще запрещено (это уже фанатизм) , можно столкнуться с тем, что его использование как раз таки сделает код более читаемым.
Например, есть три вложенных цикла, требуется при выполнении какого-то условия в самом нижнем цикле сделать выход из всех трёх, но без вынесения в процедуру (скажем, поиск первого нулевого элемента в трёхмерном массиве) . Без GOTO потребуется заводить переменную "флаг", для того чтобы последовательно выйти из одного цикла, потом из другого, потом из третьего, что выйдет в 5 строк кода и кучу проверок этого флага в каждом цикле при каждой итерации. Использование одного GOTO сократит решение до одной строки и проверок только в одном цикле. Читабельность код от этого не потеряет, скорее наоборот, есть одно чёткое условие и метка, визуально это воспринимается легче, чем 3 условия, раскинутые по разным циклам. Пример не идеальный, со многими "если", но на то он и пример.
Так что, именно "избегать" не следует. Следует продумывать в каждом случае, оправдает ли себя его применение и не ухудшит ли это визуальное восприятие кода.
Другие языки программирования и технологии
Почему следует избегать использование оператора goto?
плохой стиль, всегда можно по другому сделать, если нельзя никак иначе - значит дерьмовый алгоритм . Ну а вообще сам использовал его когда учился ток так
Эта конструкция устарела, и сейчас поддерживается для обратной совместимости со старинными прогами.
много нужно помнить при его использовании....
Похожие вопросы
- паскаль, как работать с оператором goto, как ставить метки, чтобы при операции goto 1,
- даны 3 разл целых числа a,b,c используя оператор GOTO составить программу для ввода чисел в порядке убывания
- Подскажите кто помнит QB (Бэйсик)Что значат операторы: DIM, FOR...NEXT, STEP, GOTO...
- Почему goto считается неправильным оператором? И как предлагается "правильно" выйти из третьего вложенного цикла?
- метки - дурной стиль. почему использование goto считается дурным стилем в программировании? в чем реальные минусы?
- Люди которые против goto утверждают что оно мешает чтению, и как пример приводят СОТНЮ goto в функции. И что-же....
- В Turbo Pascal есть оператор перехода Goto, а в C++ чего вместо него имеется (+синтаксис)???
- Почему goto нехороший стиль программирования ?
- Почему все так ненавидят Goto?
- Как можно написать программу на языке C, которая будет выводить числа от 1 до 1000 без if, switch, do, while, for, goto?