ФлеймФорумПрограммирование

Почему не любят goto? (17 стр)

Страницы: 116 17 18 1921 Следующая »
#240
(Правка: 18:12) 18:10, 31 авг 2025

Имбирная Ведьмочка
> Спросит у опытного. Либо набьёт шишки, станет опытным и тогда определит.
Имбирная Ведьмочка
> Код ревью.
при таком раскладе, получается, что джуну должны шишки набивать те, кто делает этот код ревью.

соответственно, сами сеньёры, чтобы сэкономить себе силы, время и палки для битья, в интернетах пропагандируют "неиспользование гото", а всякие попытки обсуждать: "нет, давайте всё-таки гото использовать" присекают.

Имбирная Ведьмочка
> И что теперь, вообще программирование запретить?
> Даже туалетной бумагой дети овладевают не с первого раза.
ну т.е. всё правильно просиходит?!
в учебных заведениях преподаётся, что гото есть, но использовать его нельзя.
на работе старшие коллеги, гото не используют, и говорят, что код ревью не пройдёт, если попытаешься гото написать.
человек вырастает программируя без гото, и передаёт свой опыт дальше.

#241
18:11, 31 авг 2025

Имбирная Ведьмочка
> если ты не будешь следить за работой интернов-джунов — то они просто испоганят вам проект
Это влажные фантазии чиновников от погроммирования ;)

#242
18:13, 31 авг 2025

totoro
> Это влажные фантазии чиновников от погроммирования ;)
суровая реальность жизни.
испоганят проект на раз-два.

...до сих пор чищу.

#243
18:43, 31 авг 2025

А так есть какие-то случаи, которые goto покрывает, а labeled break/continue - нет?

#244
19:11, 31 авг 2025

Dmitry_Milk
очистка ресурсов в сишной программе.

Или ты имеешь в виду что всегда можно do{}while(0) добавить и делать break\continue?

#245
19:25, 31 авг 2025

Есть много разных способов как имитировать goto, без goto, но выглядят они уродливее goto, со структурной и смысловой точки зрения, как сраное лицемерие они выглядят (если считать, что goto среди операторов имеется, если то не какой-нибудь python).

#246
19:51, 31 авг 2025

skalogryz
> я опасаюсь и того, что порядок вызова функций мне никто не укажет.
И снова капитанство. Если в коде не разобрался, то нужно разобраться прежде чем его править. И лучше стараться так кодить что бы порядок вызова функций был не важен, я этот момент затронул потому что по словам шведского модератора он переписал из-за этого юнити. Но причём тут глобальные переменные и гото?

skalogryz
> и я опасаюсь сайд-эффектов. да
Я прочитал про это на википедии https://ru.wikipedia.org/wiki/Побочный_эффект_(программирование). Это какие то заскоки с++ программистов?

Если вызвать функцию с побочным эффектом дважды с одним и тем же набором значений входных аргументов, может случиться так, что в качестве результата будут возвращены разные значения.

Ну и что? Тут всё зависит от того устраивает такой результат или нет.

skalogryz
> а глобальная может переменится, потому что я вызывал некий метод, который при особой фазе луны вызывает другой метод, а тот друой, и вот последний меняет значение этой глобальной переменной по своему вкусу.
> сайд-эффект.
Если накодили особую фазу Луны значит она нужна, опять же нужно разобраться в коде и узнать что это за особая фаза Луны.

skalogryz
> Возвращаясь к гото. В чём проблема сайд-эффектов - они неочивидны.
> Нужно сделать какой-то колдунство, чтобы добиться такого-то результата.
И снова всё дело в том что код нужно понимать.

skalogryz
> Упороться по гото, и написать код, который будет иметь неочевидное поведение вполне можно.
Для меня почти весь чужой код неочевидный, особенно я ненавижу лямда переменные, это лишь говорит о моей квалификации. 

totoro
> Есть такое понятие - корпоративная культура, это когда в течение некоторого времени новоприбывший погружается в кодовую базу продукта и начинает выполнять свою часть работы, придерживаясь общепринятых норм, негласных правил и подходов к программированию, принятых в коллективе. Если этого не происходит, таких, как правило, либо увольняют, либо переводят в петушатню другой отдел, если контора достаточно крупная. Вот там - пожалуйста, цветовая дифференциация и ранжирование на фрукты-овощи во все поля ;)
Ложил я болт на негласные правила.


Имбирная Ведьмочка
> Если умеешь программировать — то просто делаешь Х как надо. Если не умеешь — то учишься, затем просто делаешь Х как надо. В Х подставляется и "гоуту", и "ооп", и "солид", и всё остальное на свете. Даже туалетной бумагой дети овладевают не с первого раза.
С одной стороны ты прав. Но это приводит к багам или бракам на заводах, так как некоторые технические процессы далеко не каждый может освоить, а работать кому то надо. Человеческий фактор нужно всегда учитывать. Если большинство солид так и не освоили, это может быть проблема в солиде, а не в большинстве.

#247
19:57, 31 авг 2025

skalogryz
> ну т.е. всё правильно просиходит?!
> в учебных заведениях преподаётся, что гото есть, но использовать его нельзя.
> на работе старшие коллеги, гото не используют, и говорят, что код ревью не пройдёт, если попытаешься гото написать.
> человек вырастает программируя без гото, и передаёт свой опыт дальше.
На работе и в учебных заведения нужно делать то что говорят и как говорят. В учебных заведения заставляют учить динозавров, квантовую физику и политологию. Ну а про работу думаю у каждого найдётся своя история.

#248
20:30, 31 авг 2025

Dexus
>Есть много разных способов как имитировать goto, без goto, но выглядят они уродливее goto, со структурной и смысловой точки зрения, как сраное лицемерие они выглядят
Допустим, выполняется некоторая процедура. В ней есть набор локальных переменных и в итоге получается какой-то результат. Иногда не только он, также могут обрабатываться и глобальные переменные. Если используются операторы условия, множественного условия, циклы, то программист всё продумывает и на выходе процедуры либо один результат, либо другой, либо третий и т.д.
А если GOTO? Выполнение программы перескакивает с одной точки на другую (как космический корабль в фильме "Полёт навигатора"), контекст выполнения процедуры где-то повисает, и что в этом хорошего?

+ Показать
#249
(Правка: 20:38) 20:35, 31 авг 2025

RikiTikiTak
> Если в коде не разобрался, то нужно разобраться прежде чем его править.
а это уже выливается в проблему цены разработки.
чтобы внести некую "малую функциональную правку", нужно знать все 100% проекта, или малую часть проекта, которая касается правки 0.05%?

добавляется новый участник команды - он полезен сразу, с теми базовыми знаниями с которыми он был нанят?
или ему, чтобы стать полезным, нужно сначала понять все 100% проекта... или просто чтобы он изучил ту малую часть, которая будет касаться правки?

Почему существует такая вещь, как рынок корпоротивного софта?!
(в теории есть проблема с программным обеспечением, как продуктом - написал один раз, и всё!)

Потому что в какой-то момент, конкретный продукт доводится до состояния, что его становится слишком дорого поддерживать (вносить правки).
Те люди, кто "знали 100%" - ушли. А сами условия поддержки софта (договор), не обеспечивает обучение нового пресонала знать 100%.

В итоге клиент терпит-терпит, а потом в тихучеку уходит к конкуренту (и история повторяется).

По-этому "нужно знать 100% проекта" в долгосрочной перспективе - плохо.
Нужна модульность (куски кода друг от друга независят)
Отсутствие глобальных привязок.
Отсуствие неочевидностей.


RikiTikiTak
> Если накодили особую фазу Луны значит она нужна, опять же нужно разобраться в коде и узнать что это за особая фаза Луны.
> И снова всё дело в том что код нужно понимать.
да надо. но дорого.

лично я могу разобраться за бесплатно, из чувства профессиональной гордости и самоуважения.
но этого мало. Нет гарантии, что каждый участник проекта пойдёт на те же жертвы.

#250
20:37, 31 авг 2025

true_bump
> Если используются операторы условия, множественного условия, циклы, то программист всё продумывает и на выходе процедуры либо один результат, либо другой, либо третий и т.д.
а если при множественных циклах, при разных условиях, должен быть определённый результат? И при чём в разных ситуациях разный.
  В таких ситуациях goto нивелирует лишний код, когда в этой же ситуации, пытаться ещё условия прописать, даст больше лапшекода, лишних функций, которые практически ни чего не делают или что-нибудь подобное.

  Мы не можем говорить за всех. Мы можем говорить только за себя. И, если в определённой ситуации я использую goto, то это не значит, что в конечном коде он будет. И точно так же наоборот, если его нет в коде, то не факт что в конечном коде его не будет.
  Всё зависит от решения. Лишь одно правильно более-менее, если нет необходимости использовать goto в данной ситуации, то и не надо специально его туда засовывать.

#251
20:37, 31 авг 2025

true_bump
> Лично я давно забыл про GOTO. Я даже Exit и Break стараюсь стороной обходить, если возможно

Например, есть какой-то worker выполняющий длительную, сложную, пошаговую операцию (какой-то технологический процесс имитируется) и в какой-то (любой произвольный от 0 до 100% до завершения) момент оператор нажал кнопку отмена, нужно последовательно выйти из всех циклов и привести систему в изначальное состояние.  Вот эти вот брейки с флагом отмены превращают код в адище.

#252
20:39, 31 авг 2025

Mirrel
> В таких ситуациях goto нивелирует лишний код, когда в этой же ситуации, пытаться ещё условия прописать, даст больше лапшекода, лишних функций, которые практически ни чего не делают или что-нибудь подобное.

Вынос ветки кода в отдельную процедуру/функцию и/или тернарные операторы избавляют от необходимости goto почти в 100% кода, занимающегося вычислениями, в котором нет циклов ожидания.

#253
20:42, 31 авг 2025

0iStalker
> момент оператор нажал кнопку отмена, нужно последовательно выйти из всех циклов и привести систему в изначальное состояние.
Гугол привил решение этой проблемы: вложенные циклы выносим в отдельнй процесс.
По отмене процесс прибиваем. Управлающие приложение (система) вернулась в изначальное состояние :)

#254
20:48, 31 авг 2025

skalogryz
> Гугол привил решение этой проблемы: вложенные циклы выносим в отдельнй процесс.

Кошке понятно, что worker в отдельном потоке работает, чтобы GUI не зависал. В изначальное состояние, это значит что в него и аппаратуру нужно вернуть (отключить высоковольтные блоки питания,  отключить ТЭН, вентиляторы, итд) - т.е. нужно не просто прибить поток, но и выполнить завершающий код, перед этим

Страницы: 116 17 18 1921 Следующая »
ФлеймФорумПрограммирование