|
|
| Результаты опроса: Используете ли Вы оператор 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. Показов 14972. Ответов 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
|
|||||||
|
14783 / 9557 / 1366
Регистрация: 21.01.2016
Сообщений: 36,033
|
||
| 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
|
|||||||
|
14783 / 9557 / 1366
Регистрация: 21.01.2016
Сообщений: 36,033
|
|||||||||
| 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
Ваше отношение к не своим детям Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|