C/C++

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

Почему за использование goto тебя могут забить ногами
Потому, что в современных языках высокого уровня любой код можно написать без goto и такой код в большинстве случаев будет намного понятнее, чем вариант c goto. Неправильное использование goto приводит к написанию кода, на чтение которого понадобится затратить неадекватно много времени и сил.

Существуют 2 реальные причины использования goto в языках высокого уровня:

1. для обработки ошибок в тех языках, где специальные механизмы работы с ошибками (исключения, возврат ошибки как значения и т. д.) не предусмотрены. Но только в том случае, когда обработка ошибок без goto сильно усложняет код.

2. для имитации многоуровневых break / continue в циклах - опять же, если в языке это не предусмотрено. Но в этом случае чаще также можно обойтись без goto - поместив циклы в отдельную подпрограмму и реализуя выход из циклов посредством return.
***дмитрий ***
***дмитрий ***
77 358
Лучший ответ
Использование goto, за исключением некоторых случаев, ухудшает читабельность программы и мешает компилятору и процессору оптимизировать выполнение кода.
Ануар Ербосынов 1. а почему его тогда вообще не уберут из языка.
2. кому щас нахер нужно это оптимизирование выполнения кода.
кому нужно тот будет делать это сам.
Возвращает обратно, после исполнения пока цель небудет достигнута
Ерунда это, использовать можно иногда, просто если сделать все через goto - то будут очень злые, все равно, что на уровень ассемблера перейти
Игорь Симонов
Игорь Симонов
73 441
Есть немало способов обойти использование goto и сделать код более лаконичным
я знаю только 1 минус - типа макаронный код.
непонимаю нытьё.
плюсов дохрена.

continue это гото в конец цикла. а иногда очень нужно гото в начало цикла. почему бы и нет.
куча if ужасно всё тормозит. с гото можно выйграть целую 0.1 сек.
Юрий ...
Юрий ...
30 065
Потому что
Артем Бузыцков
Артем Бузыцков
23 064
Это глупый миф в среде неучей и дурачков.
Артур Джан
Артур Джан
12 593
Иван Рязанов Это НЕ глупый миф. Похоже, что ты НИКОГДА не возился с ЧУЖОЙ программой, написанной с кучей GOTO! А вот мне - довелось. Правда, очень давно, году в 78-80.
Сергей Серебряков Стандарт-не-стандарт-плохо-не-плохо "а Васька (зачеркнуто) Microsoft не слушает да пишет".
Я к тому что если смотреть исходники .NET в Microsoft совсем не гнушаются goto.
Ричард Стивенс, автор известных книг "TCP/IP Illustrated" и "Unix Network Programming", как-то раз заметил, что противникам использования GOTO стоит попробовать реализовать функцию tcp_input() из 4.4BSD реализации TCP/IP без GOTO так, чтобы она была хотя бы столь же эффективна, как исходная. Мораль: всему свое место.
EO
Erkebulan Omarov
11 084
А что такое это
Иван Насонов
Иван Насонов
5 476
Просто в школе юных программистов за это ругали учителя, поэтому они продолжают ругать за GOTO других программистов, безосновательно аргументируя это очень частными случаями.
Так то это просто оператор, полезный в некоторых случаях. А захламить программу можно и другими вещами, неужели от всего надо отказываться?
Артем Сергеев
Артем Сергеев
4 193
Используй до тех пор пока сам не поймешь почему нельзя !

Вообще проблем невижу с гото.
один хер когда что то не работает идешь и смотришь код почему не робит.
@ @ @ U K R A I N E @ @ @
@ @ @ U K R A I N E @ @ @
2 780