-
В принципе против меток возражений не имею. В ассемблере без меток вообще никак не обойтись. В Паскале обойтись без них можно и желательно.
Сам когда-то использовал метки в одной из своих программ (поскольку решил что так код будет короче и понятней, но теперь тоже сам не могу в нем разобраться. :)
-
Иногда можно.
Использовал один раз.
-
А ведь можно внутри while еще один while сделать или repeat. Тогда просто break.
Пользовался метками. Потом все снес. Сейчас метки только в ассемблере.
-
> 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: ...
-
Да я не против меток, тем более в асме они повсюду ).
Где то на просторах нэта читал, что мол goto упразднят. Подумал, подумал и избавился от меток. А goto так и не убрали из языка. Кругом обман.
-
В целом - отрицательно.
Но, иногда, использую реинкарнацию процедур и функций из, скажем, Фортрана.
Дабы не корежить все - использую.
-
Если нужно выйти из нескольких циклов, я бы сделал бы выход из подпроцедуры.
-
неиспользование GOTO - это из серии Argumentum ad verecundiam -
вид ошибочной логической аргументации — предложение считать некоторое утверждение корректным потому, что такое утверждение сделано неким источником, считающимся авторитетным (wiki)
, то есть, один гуру брякнул исходя из своей субъективной нелюбви, остальные бездумно подхватили. Ни одного достойного, объективного аргумента, доказывающего вред сего, нет.
-
> K-1000 © (24.05.16 21:55) [26]
Можно и процедуру. Можно придумать еще десяток способов. Но ни один из них по простоте, читабельности и накладным расходам не сравнится с [23].
Особенно если немного изменить задачу. Допустим, требуется не прервать внеший цикл, а выйти на какой-то оператор ПЕРЕД его началом.
-
Читабельность субъективна. Любой код с goto менее читабелен, чем вариант без goto. Просто за счет того, что этот оператор очень редко используется. Приходится спотыкаться о него взглядом и думать чего же там хочет автор.
Код из начала ветки - яркий пример. Приходится его в голове повертеть, чтобы понять что имел ввиду автор. Альтернатива же без goto воспринимается сходу. Просто за счет привычки.
-
> Kerk © (25.05.16 01:03) [29]
>
> Читабельность субъективна. Любой код с goto менее читабелен,
> чем вариант без goto. Просто за счет того, что этот оператор
> очень редко используется. Приходится спотыкаться о него
> взглядом и думать чего же там хочет автор.
>
Да. Для тех кто его никогда не применял.
Для тех, кто применял и знает с чем его кушать - пример Юрий Зотов © (24.05.16 12:42) [23]
-
> Германн © (25.05.16 01:40) [30]
Предлагаю прочитать мой комментарий еще раз целиком :)
-
Код нужно писать таким образом, чтобы в каждый момент можно было держать в голове как можно меньше информации. В примере из [23] человек наткнувшийся на метку будет вынужден выяснять "а кто это у нас сюда прыгает?". Код после цикла сразу же перестает быть просто кодом, который выполняется после цикла. Линейность восприятия теряется. Появляется никому не нужная сложность.
-
> Kerk © (25.05.16 01:42) [31]
>
>
> > Германн © (25.05.16 01:40) [30]
>
> Предлагаю прочитать мой комментарий еще раз целиком :)
>
Предлагаю прочитать и мой комментарий ещё раз целиком.
А так же и ответы ЮЗ.
Чем "лесенка" кода уже, тем она лучше.
-
> человек наткнувшийся на метку будет вынужден выяснять "а
> кто это у нас сюда прыгает?".
Возле метки пишем краткий коммент - и проблема исчезла.
Кстати, ставить подобные краткие комменты по ходу выполнения прикладного функционала - тоже не вредно. Сильно облегчает понимание чужого кода, например. Или даже своего, через пару лет.
-
> Возле метки пишем краткий коммент - и проблема исчезла.
Еще лучше - дать метке осмысленное имя. Тогда и коммент может не потребоваться, метка сама все о себе скажет.
-
> Юрий Зотов © (25.05.16 01:54) [34]
>
> > человек наткнувшийся на метку будет вынужден выяснять "а
> > кто это у нас сюда прыгает?".
>
> Возле метки пишем краткий коммент - и проблема исчезла.
Об этом и речь. Комментарий написать конечно можно. Но сама необходимость написать комментарий как бы намекает нам, что с читаемостью не все в порядке.
> ставить подобные краткие комменты по ходу выполнения прикладного
> функционала - тоже не вредно
Это совсем другое. Goto и метки - это не прикладной функционал.
-
> Юрий Зотов © (25.05.16 01:58) [35]
>
> > Возле метки пишем краткий коммент - и проблема исчезла.
>
> Еще лучше - дать метке осмысленное имя.
Ну это еще куда ни шло :)
Но все равно я против goto. В основном по причинам описанным в [29]. Очень редко используется, а потому спотыкаешься взглядом и ищешь в чем подвох. Неприятное ощущение.
-
> Kerk © (25.05.16 01:59) [36]
>
>
> > Юрий Зотов © (25.05.16 01:54) [34]
> >
> > > человек наткнувшийся на метку будет вынужден выяснять
> "а
> > > кто это у нас сюда прыгает?".
> >
> > Возле метки пишем краткий коммент - и проблема исчезла.
>
>
> Об этом и речь. Комментарий написать конечно можно. Но сама
> необходимость написать комментарий как бы намекает нам,
> что с читаемостью не все в порядке.
Можно подумать что с читаемостью длинной и широкой простыни, которая не использует goto проблем не будет.
-
> Kerk © (25.05.16 02:01) [37]
Дело привычки, всего лишь.
Конечно, я против злоупотребления метками в ЯВУ (асм не в счет). Но если метка единственная, на нее идет только один переход, а сама метка стоит рядом с goto - то все в порядке.