Конференция "Прочее" » Как вы относитесь к использованию меток в Delphi?
 
  • Германн © (22.05.16 01:15) [20]
    В принципе против меток возражений не имею. В ассемблере без меток вообще никак не обойтись. В Паскале обойтись без них можно и желательно.
    Сам когда-то использовал метки в одной из своих программ (поскольку решил что так код будет короче и понятней, но теперь тоже сам не могу в нем разобраться. :)
  • Тимохов Дима © (24.05.16 02:09) [21]
    Иногда можно.
    Использовал один раз.
  • dmk © (24.05.16 11:00) [22]
    А ведь можно внутри while еще один while сделать или repeat. Тогда просто break.
    Пользовался метками. Потом все снес. Сейчас метки только в ассемблере.
  • Юрий Зотов © (24.05.16 12:42) [23]
    > dmk ©   (24.05.16 11:00) [22]

    > А ведь можно внутри while еще один while сделать или repeat.
    > Тогда просто break.

    Не всегда. Недавно столкнулся примерно с такой ситуацией:

    while ... do
    begin
     while ... do
     begin
       ...
       if ... then
       // Здесь нужно прервать ВНЕШНИЙ цикл. Break не прокатывает.
      goto lbl; // А вот goto - прокатывает. Просто, читабельно и элегантно.
     end;
    end;
    lbl: ...
  • dmk © (24.05.16 13:01) [24]
    Да я не против меток, тем более в асме они повсюду ).
    Где то на просторах нэта читал, что мол goto упразднят. Подумал, подумал и избавился от меток. А goto так и не убрали из языка. Кругом обман.
  • Jeer © (24.05.16 17:49) [25]
    В целом - отрицательно.
    Но, иногда, использую реинкарнацию процедур и функций из, скажем, Фортрана.
    Дабы не корежить все - использую.
  • K-1000 © (24.05.16 21:55) [26]
    Если нужно выйти из нескольких циклов, я бы сделал бы выход из подпроцедуры.
  • KilkennyCat © (24.05.16 23:22) [27]
    неиспользование GOTO - это из серии Argumentum ad verecundiam -
    вид ошибочной логической аргументации — предложение считать некоторое утверждение корректным потому, что такое утверждение сделано неким источником, считающимся авторитетным (wiki)

    , то есть, один гуру брякнул исходя из своей субъективной нелюбви, остальные бездумно подхватили. Ни одного достойного, объективного аргумента, доказывающего вред сего, нет.
  • Юрий Зотов © (25.05.16 00:35) [28]
    > K-1000 ©   (24.05.16 21:55) [26]

    Можно и процедуру. Можно придумать еще десяток способов. Но ни один из них по простоте, читабельности и накладным расходам не сравнится с [23].

    Особенно если немного изменить задачу. Допустим, требуется не прервать внеший цикл, а выйти на какой-то оператор ПЕРЕД его началом.
  • Kerk © (25.05.16 01:03) [29]
    Читабельность субъективна. Любой код с goto менее читабелен, чем вариант без goto. Просто за счет того, что этот оператор очень редко используется. Приходится спотыкаться о него взглядом и думать чего же там хочет автор.

    Код из начала ветки - яркий пример. Приходится его в голове повертеть, чтобы понять что имел ввиду автор. Альтернатива же без goto воспринимается сходу. Просто за счет привычки.
  • Германн © (25.05.16 01:40) [30]

    > Kerk ©   (25.05.16 01:03) [29]
    >
    > Читабельность субъективна. Любой код с goto менее читабелен,
    >  чем вариант без goto. Просто за счет того, что этот оператор
    > очень редко используется. Приходится спотыкаться о него
    > взглядом и думать чего же там хочет автор.
    >

    Да. Для тех кто его никогда не применял.
    Для тех, кто применял и знает с чем его кушать - пример Юрий Зотов ©   (24.05.16 12:42) [23]
  • Kerk © (25.05.16 01:42) [31]

    > Германн ©   (25.05.16 01:40) [30]

    Предлагаю прочитать мой комментарий еще раз целиком :)
  • Kerk © (25.05.16 01:47) [32]
    Код нужно писать таким образом, чтобы в каждый момент можно было держать в голове как можно меньше информации. В примере из [23] человек наткнувшийся на метку будет вынужден выяснять "а кто это у нас сюда прыгает?". Код после цикла сразу же перестает быть просто кодом, который выполняется после цикла. Линейность восприятия теряется. Появляется никому не нужная сложность.
  • Германн © (25.05.16 01:52) [33]

    > Kerk ©   (25.05.16 01:42) [31]
    >
    >
    > > Германн ©   (25.05.16 01:40) [30]
    >
    > Предлагаю прочитать мой комментарий еще раз целиком :)
    >

    Предлагаю прочитать и мой комментарий ещё раз целиком.
    А так же и ответы ЮЗ.
    Чем "лесенка" кода уже, тем она лучше.
  • Юрий Зотов © (25.05.16 01:54) [34]
    > человек наткнувшийся на метку будет вынужден выяснять "а
    > кто это у нас сюда прыгает?".


    Возле метки пишем краткий коммент - и проблема исчезла.

    Кстати, ставить подобные краткие комменты по ходу выполнения прикладного функционала - тоже не вредно. Сильно облегчает понимание чужого кода, например. Или даже своего, через пару лет.
  • Юрий Зотов © (25.05.16 01:58) [35]
    > Возле метки пишем краткий коммент - и проблема исчезла.

    Еще лучше - дать метке осмысленное имя. Тогда и коммент может не потребоваться, метка сама все о себе скажет.
  • Kerk © (25.05.16 01:59) [36]

    > Юрий Зотов ©   (25.05.16 01:54) [34]
    >
    > > человек наткнувшийся на метку будет вынужден выяснять "а
    > > кто это у нас сюда прыгает?".
    >
    > Возле метки пишем краткий коммент - и проблема исчезла.

    Об этом и речь. Комментарий написать конечно можно. Но сама необходимость написать комментарий как бы намекает нам, что с читаемостью не все в порядке.

    > ставить подобные краткие комменты по ходу выполнения прикладного
    > функционала - тоже не вредно

    Это совсем другое. Goto и метки - это не прикладной функционал.
  • Kerk © (25.05.16 02:01) [37]

    > Юрий Зотов ©   (25.05.16 01:58) [35]
    >
    > > Возле метки пишем краткий коммент - и проблема исчезла.
    >
    > Еще лучше - дать метке осмысленное имя.

    Ну это еще куда ни шло :)

    Но все равно я против goto. В основном по причинам описанным в [29]. Очень редко используется, а потому спотыкаешься взглядом и ищешь в чем подвох. Неприятное ощущение.
  • Германн © (25.05.16 02:07) [38]

    > Kerk ©   (25.05.16 01:59) [36]
    >
    >
    > > Юрий Зотов ©   (25.05.16 01:54) [34]
    > >
    > > > человек наткнувшийся на метку будет вынужден выяснять
    > "а
    > > > кто это у нас сюда прыгает?".
    > >
    > > Возле метки пишем краткий коммент - и проблема исчезла.
    >
    >
    > Об этом и речь. Комментарий написать конечно можно. Но сама
    > необходимость написать комментарий как бы намекает нам,
    > что с читаемостью не все в порядке.

    Можно подумать что с читаемостью длинной и широкой простыни, которая не использует goto проблем не будет.
  • Юрий Зотов © (25.05.16 02:09) [39]
    > Kerk ©   (25.05.16 02:01) [37]

    Дело привычки, всего лишь.

    Конечно, я против злоупотребления метками в ЯВУ (асм не в счет). Но если метка единственная, на нее идет только один переход, а сама метка стоит рядом с goto - то все в порядке.
 
Конференция "Прочее" » Как вы относитесь к использованию меток в Delphi?
Есть новые Нет новых   [134432   +19][b:0.001][p:0.002]