|
|
| Результаты опроса: Используете ли Вы оператор goto? | |||
| Программирую исключительно на goto |
|
4 | 10.00% |
| Использую, если имеет смысл |
|
22 | 55.00% |
| Категорически не использую |
|
13 | 32.50% |
| Использую, но никто об этом не знает |
|
1 | 2.50% |
| Голосовавшие: 40. Вы ещё не голосовали в этом опросе | |||
|
|
Рейтинг 4.59/68:
|
|
198 / 93 / 43
Регистрация: 09.11.2019
Сообщений: 414
|
|||||||||||
Ваше отношение к goto10.08.2021, 19:57. Показов 15136. Ответов 95
Всем привет.
Обычно оператор безусловного перехода goto хейтится. Данным постом я не хочу поднимать очередной холивар, хочу просто узнать мнение окружающих - как относитесь к практике применения goto там, где это имеет смысл, и используете ли сами. Парочка примеров, с которыми я столкнулся буквально вот на днях:
1. Либо сделать присвоение predicate = null(или ещё что) и избавиться от блока default целиком. Хотя лично мне спокойнее, когда default в коде имеется. 2. В блоке default скопипастить кейс, на который ссылаюсь(тогда при изменениях надо помнить, что менять нужно в 2 местах). В свитче я оставил goto(мой первый goto в жизни )Другой пример:
1. Применить SelectMany к groups и оставить один цикл foreach. 2. Повозиться с флагами и break'ами. Здесь мне готушить не хочется, не знаю почему. Т.е. можно и без goto жить в обоих приведенных(и ещё n неприведённых) примерах.
0
|
|||||||||||
| 10.08.2021, 19:57 | |
|
Ответы с готовыми решениями:
95
Ваше отношение к DOSу Ваше отношение к SCRUM Ваше отношение к Windows 10 |
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||
| 11.08.2021, 00:49 | |||
|
Но я и не разрабатываю системы, где разница между условным и безусловным переходами может быть узким местом. Если придется такой код писать — буду использовать goto и спать спокойно.
0
|
|||
|
|
|||
| 11.08.2021, 01:00 | |||
|
0
|
|||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||||
| 11.08.2021, 01:12 | |||||
|
Но когда-таки находит — не стоит от него шарахаться, как бес от ладана.
2
|
|||||
|
|
||||
| 11.08.2021, 01:20 | ||||
|
Вопрос вам, kolorotur, Некая функция F2 принимает в свои аргументы результат предстоящей выше функции F1, которая, в свою очередь, работает в зависимости от возвращаемых значений функции F3, стоящей после функции F2. Вы тут тоже про goto подумали? Думаю, нет. Добавлено через 2 минуты
0
|
||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 11.08.2021, 02:02 | ||
|
Этот оператор не предназначен для структурирования кода. Вы выше сделали утверждение, что наличие goto в коде — признак его плохого структурирования. Из того, что в плохо структурированном коде может присутствовать оператор goto вовсе не следует, что наличие в коде goto — автоматически означает его плохую структурированность. Могут быть и другие причины для его наличия, вполне осознанные и продуманные. Кстати, вот выше есть примеры использования этого ужасного оператора в нашем любимом фреймворке. Фреймворк с открытыми исходниками, поддерживатели активно принимают PR-ы. Попробуйте ради эксперимента разместить PR, где в каком-нибудь классе эта мерзость отрефакторена под нормальную структуру — может и правда код практиканта проскользнул мимо ревью, а может оказаться что там люди по-умнее нас с вами сидят и прокомментируют что-нибудь познавательное.
1
|
||
|
|
||||||||
| 11.08.2021, 02:27 | ||||||||
|
__Corey,
Кликните здесь для просмотра всего текста
Тут уже религия как кому позволяет. В данном случае ваш next явно ведет к какому-то методу, который просто можно вызвать из цикла, при условии if(statement), без использования goto. Т.е. в данном случае это goto совершенно бесполезно.Добавлено через 9 минут Добавлено через 5 минут А обычным сишарпистам, которые крестики-нолики рисуют - понятно дело, это не интересно. Там до goto еще Go.......Tooooo....
0
|
||||||||
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|||||||
| 11.08.2021, 02:41 | |||||||
default имеется и дублирования кода нет.
1
|
|||||||
|
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,114
|
||
| 11.08.2021, 05:38 | ||
|
Оттуда и разница в том, что вы видите. Не делайте резких выводов о том, что не знаете. Интереса ради посмотрите на обсуждения PR'ов в том же .NET. Там малые баталии могут разворачиваться из-за буквально одного каста неуместного или проверки на null не в том месте. Эти люди внатуре знают, что они делают. Если вас поставить в их положение, когда от кода требуется 146% производительности, то вы тоже начнёте озадачиваться тем, а что же JIT будет генерировать в той или иной ситуации. Тогда, вдруг, окажется, что плохие практики, типа goto, не такие уж и плохие, когда дело доходит до оптимизаций. Оптимальный код и так уродлив.
4
|
||
|
|
||
| 11.08.2021, 10:42 | ||
|
Usaga, плюсую вам. Вы много написали, я прочел. И так, мой вопрос - вы часто используете goto? В своей практике?
Добавлено через 8 минут Знаете что интересно? Просто, как только поднимается некая тема, касающаяся неких вещей, неожиданно встретившихся, так от куда ни возьмись вылезает куча (утрированно) специалистов, готовых пояснить миру - вы ж что? как вы этого не знали? Это ж круто (правильно)... ну все в таком духе. Usaga, kolorotur, покажите мне реальный документ, в котором будет сказано о том, что применение goto обосновано. Даже не нужно, просто обосновано. В рамках строения программ современного времени, даже пусть не ООП. На всякий случай напомню вопрос ТС:
0
|
||
|
|
||||||
| 11.08.2021, 10:47 | ||||||
|
Можно спросить экспертов, чем заменить это, без goto:
0
|
||||||
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
||
| 11.08.2021, 10:50 | ||
|
3
|
||
|
|
|||||||
| 11.08.2021, 11:42 | |||||||
|
Раз уж воцарилось некоторое затяжное молчание, то, с позволения так сказать, прокомментирую:
0
|
|||||||
|
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,114
|
|||||||||
| 11.08.2021, 12:40 | |||||||||
|
2
|
|||||||||
|
|
|||||||||
| 11.08.2021, 14:10 | |||||||||
|
Добавлено через 1 минуту
0
|
|||||||||
|
|
|||
| 11.08.2021, 15:46 | |||
|
Но заметил минус такой реализации - такие методы приходится нагружать параметрами. Так как уже видно что извне мы 2 параметра используем. А часто бывает что побольше. Сталкивался не раз.
0
|
|||
|
|
||
| 11.08.2021, 15:59 | ||
|
От меня вопрос был про выход из циклов глубокой вложенности (необязательно 2, как в примере)
0
|
||
|
|
||
| 11.08.2021, 16:10 | ||
|
https://aakinshin.net/posts/inlining-and-starg/ https://ayende.com/blog/183553-A/using-goto-in-c
0
|
||
| 11.08.2021, 16:10 | |
|
Ваше отношение к co-working? Ваше отношение к flash-заставкам Ваше отношение к деятельности Anonymous
Ваше отношение к не своим детям Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|