Город: Toronto
Стаж: 12 лет 1 месяц 13 дней
Постов: 10707
Лайкнули: 3448 раз
Карма: 33%
СССР: Днепропетровск
Пол: М
Лучше обращаться на: ты
Заход: 12 Sep 2024, 06:51
Не надо этого бояться. break и даже иксепшены - тоже родственники goto, и ничего. Когда-то, много лет назад, когда программисты мира (ага, все 30 человек ) переходили с ассемблера на языки 3-го поколения, шла борьба со старыми привычками (если ты имел дело с ассемблером, то знаешь, что там программа прыгает с места на места как блоха: если то-то, то jump туда-то...), причём одной из самых крепко засевших была привычка юзать goto там, где можно написать if ... else - с ней и развернулась главная борьба, отголоски которой встречаются в книгах до сих пор - мол, напишешь goto и черти сразу зажарят тебя на сковороде. При этом ни словом не упоминается, что вполне может возникнуть ситуация, когда употребление этого нецензурного слова очень даже оправдано даже в эпоху айфонов.
ну дело в том, что после компиляции код с гоуту не будет особо (а может и совсем) отличаться от кода без гоуту. все верно, на асме джампы будут юзаться, в любом случае. и препод по асму нам говорила, что джампы мы можем использовать в асме, ибо без него не получится сделать циклы. собственно, мы все циклы джампами и делали. тогда в чем прикол запрещать гоуту в более высокоуровневом программировании? всюду в других языках нам строго запрещалось его использовать, на равне с брейком.
Вероятно, это было сделано для развития нашего мышления, ибо давали-то нам определенные задачки решать и если использовать брейк и гоуту, то решение могло быть гораздо проще, не пришлось бы просчитывать циклы, просто делаешь брейк, когда захочется, да и все. Собственно, я до сих пор не использую гоуту и брейк в коде и глаз режет, когда вижу.
ЗЫ
но по моему, мы не в той теме обсуждаем брейки и гоутушки.
Город: Toronto
Стаж: 12 лет 1 месяц 13 дней
Постов: 10707
Лайкнули: 3448 раз
Карма: 33%
СССР: Днепропетровск
Пол: М
Лучше обращаться на: ты
Заход: 12 Sep 2024, 06:51
ахахахахах, а ctrl+F - не утилита? :) а как на счет тотлавского волшебного ctrl+alt+F7? эта утилита найдет что угодно где угодно, ею даже по бинарникам сигнатуры можно рекурсивно искать. При этом, читая их в разных кодировках. По моему, там их даже хексом можно читать :)
Но, все же, видимо, гоуту - нехорошо, если кто-то его ищет.
При этом ни словом не упоминается, что вполне может возникнуть ситуация, когда употребление этого нецензурного слова очень даже оправдано даже в эпоху айфонов.
И какая же это ситуация? Без goto можно обойтись всегда
Город: Toronto
Стаж: 12 лет 1 месяц 13 дней
Постов: 10707
Лайкнули: 3448 раз
Карма: 33%
СССР: Днепропетровск
Пол: М
Лучше обращаться на: ты
Заход: 12 Sep 2024, 06:51
Помнится, в старом PowerBuilder-е (до появления exceptions - кажется, в 7 версии) мы писали функции, производящие валидацию данных перед отправкой на сервер, следующим образом:
А я обратного и не утверждал! Например, ту-же функцию можно написать следующим образом (некоторые так и писали), да только я сомневаюсь, что это более элегантный способ (чтоб не сказать жёстче):
в общем, это не только у меня гоуту глаз режет, и это при том, что я свой универ закончил пару лет назад, тобишь, студентов в политехах все еще этому учат.
Уродливо, но зато без ненавистного матюка!
уродливо в обоих случаях. в первом случае я бы вместо гоуту вызывал функцию решения вопроса, а во втором я бы вместо экзита присваивал счетчику (или что там у нас в условии выхода из лупа) критическое значение и потом обрабатывал бы все последующие изменения, ибо цикл при этом доделает до конца этот раз. Ты можешь сказать, что это плохо - доделывать и исправлять доделки. да, плохо, и я так не делаю, я учитываю, что цикл может прерваться еще вначале разработки архитектуры цикла и разрабатываю его так, чтобы обходиться без экзита и выходить из цикла чистым. тобишь, я всегда знаю, стоит ли завершать цикл перед тем, как начать его сначала. Мой опыт сильно ограничен, учитывая то, что последние несколько лет я только алгоритмы разрабатываю, а код не пишу, но я никогда не пользовался экзитами и брейками, чтобы заканчивать процессы.
Вам есть что сказать по этой теме? Зарегистрируйтесь, и сможете оставлять комментарии