|
|
| Результаты опроса: Используете ли Вы оператор 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. Показов 14804. Ответов 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
|
|||||||
|
14727 / 9503 / 1362
Регистрация: 21.01.2016
Сообщений: 35,830
|
||
| 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
|
|||||||
|
14727 / 9503 / 1362
Регистрация: 21.01.2016
Сообщений: 35,830
|
|||||||||
| 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
Ваше отношение к не своим детям Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|