Имбирная Ведьмочка
> И следовательно, религиозная категоричность в любую сторону — это стрём
> Иногда, правильное решение — это таки взять гвоздь и забить его молотком.
"когда у тебя молоток, то всё вокруг - гвозди"
как (неопытный) программист сможет определить, когда нужно использовать гото, а когда нельзя?
и что его остановит от неиспользования?
Раньше когда программировали в блокноте, то гото может и был страшен тем что там метку найти трудно или хз почему. Но сейчас в вижуал студия по правому клику мыши всё найти можно.
entryway
> Ну в C вроде завезли break label
Завели пропозал это ещё не значит завезли. Учитывая, что он только в этом году появился (хотя в Java этой фиче уже вроде бы больше 30-ти лет), то может быть лет через пять она появится в стандарте и ещё через пять ей только начнут пользоваться. Хотя по меркам Си даже это уже практически завтра.
RikiTikiTak
> был страшен тем что там метку найти трудно или хз почему
проблема может возникнуть в отслеживании логики.
по аналогии при работе с глобальными переменными
и чем больше кода в функции, тем страшнее такой гото код менять.
ну и когда-то гото был настоящим! и позволял прыгать из функции в функцию.
Разве сейчас глобально нельзя это делать?
skalogryz
> ну и когда-то гото был настоящим! и позволял прыгать из функции в функцию.
Mirrel
> Разве сейчас глобально нельзя это делать?
зависит от конкретного языка/компилятора.
в паскале - нет
skalogryz
> проблема может возникнуть в отслеживании логики.
> по аналогии при работе с глобальными переменными
Что это за аналогия с глобальными переменными?
skalogryz
> и чем больше кода в функции, тем страшнее такой гото код менять.
В блокноте работаешь? Ну а так ты капитанишь, другими словами чем больше кода тем сложнее в нём разобраться и что то поменять, в своём коде всегда проще разобраться чем в чужом. И даже и так, то код пишется не для того что бы постоянно его менять.
RikiTikiTak
> Что это за аналогия с глобальными переменными?
глобальные преременные могут менятся когда угодно, и есои пишешь код с их использованием, то приходиться это учитывать.
RikiTikiTak
нет. Работаю в vs. я не говорю про объём кода в целом, а про код отдельный функций. Мне приходится править код в методах там по 10к строк. Править их грустно. И к тому же правки вносят 3 человека.
1 frag / 2 deaths
> Тратить время чтобы посчитать циклы
Если у кого-то 5 вложенных циклов, то — ССЗБ. У меня обычно больше трех не бывает, поэтому проблемы со счетом нет и дополнительные усложнения синтаксиса мне не нужны.
skalogryz
Переменная может перемениться — очень полезные знания.
Игра без сети и работает в один поток, переменная не измениться пока не выполниться функция. Или чего опасаешься? Порядок вызова функций нужен?
Это похвально что ты можешь работать с кем то в команде и разбираться в чужом коде, но ты сам выбрал такую работу. А вот меня выбрала работа :)
RikiTikiTak
> Переменная может перемениться — очень полезные знания.
> Или чего опасаешься? Порядок вызова функций нужен?
я опасаюсь и того, что порядок вызова функций мне никто не укажет.
и я опасаюсь сайд-эффектов. да
переменная находящаяся в стеке или регистре не может перемениться, пока я в конкретной процедуре не укажу ей это сделать.
а глобальная может переменится, потому что я вызывал некий метод, который при особой фазе луны вызывает другой метод, а тот друой, и вот последний меняет значение этой глобальной переменной по своему вкусу.
сайд-эффект.
Возвращаясь к гото. В чём проблема сайд-эффектов - они неочивидны.
Нужно сделать какой-то колдунство, чтобы добиться такого-то результата.
Упороться по гото, и написать код, который будет иметь неочевидное поведение вполне можно.
Особенно если начать организовывать свякие циклы и switch выражения на гото. И всё эффективности ради.
skalogryz
> "когда у тебя молоток, то всё вокруг - гвозди"
Ты слово пропустил — "когда у тебя только молоток". А запретить обычные циклы — пока не додумались даже в этом треде.
skalogryz
> как (неопытный) программист сможет определить, когда нужно использовать гото, а когда нельзя?
Спросит у опытного. Либо набьёт шишки, станет опытным и тогда определит.
skalogryz
> и что его остановит от неиспользования?
Код ревью.
Просто все те же самые аргументы можно применить к чему угодно. Если равняться на "что если дурак сделает неправильно" — дурак сможет абсолютно что угодно сделать неправильно, на то он и дурак, он даже на трёх кейвордах сумеет нагромоздить кучу неподдерживаемого говна. И что теперь, вообще программирование запретить?
Имбирная Ведьмочка
> Код ревью.
Для пижонов и колхозной молодежи, чтоб не скучно было ;) Норм мужикам оно не упало, хочется делать свою часть работы, а не отвлекаться на всякую хрень, которую легче самому сделать, чем тебя постоянно за рукав дергать будут.
Я очень люблю goto. Называется throw :)
totoro
> Норм мужикам оно не упало, хочется делать свою часть работы, а не отвлекаться на всякую хрень, которую легче самому сделать, чем тебя постоянно за рукав дергать будут.
Да мало ли чего хочется, а я вот вообще хочу миллиард долларов, семь любящих жён и личный остров с прислугой. Но помимо хотелок есть ещё и реальное положение дел, и там, если ты не будешь следить за работой интернов-джунов — то они просто испоганят вам проект настолько, что от "сэкономленного" от кодревью времени вы потом будете в 10-50 раз дольше ловить баги и выправлять кишки постфактум.
Если умеешь программировать — то просто делаешь Х как надо. Если не умеешь — то учишься, затем просто делаешь Х как надо. В Х подставляется и "гоуту", и "ооп", и "солид", и всё остальное на свете. Даже туалетной бумагой дети овладевают не с первого раза.