Соглашения об именах для меток GoTo

Как вы называете свои лейблы GoTo? Я использую редко часто, поэтому мне трудно найти хорошие имена.

Пожалуйста, воздержитесь от классического обсуждения "перейти к злу и съесть свой код заживо"


person dr. evil    schedule 28.03.2009    source источник
comment
Разве это не зависит от того, для чего они используются? Я предпочитаю называть каждый идентификатор как что-то значимое в контексте, в котором они используются. Конечно, рассказывая нам, где вы их используете, вы можете начать обсуждение того, что вы могли бы использовать вместо gotos. Везет, как утопленнику. :)   -  person jalf    schedule 28.03.2009
comment
Я бы также сказал, что если вам нужно соглашение об именах, похоже, вы злоупотребляете им. ;)   -  person jalf    schedule 28.03.2009


Ответы (5)


Имена моих лейблов почти всегда соответствуют одному из следующих шаблонов:

  • Вызывается «перезапуск» для перезапуска набора вложенных циклов, поскольку изменение сделало что-то недействительным.
  • Вызывается «выход» или «возврат» прямо перед оператором возврата и присутствует только из-за оператора трассировки, который регистрирует возвращаемое значение для отладки.
  • Имеет то же имя, что и логическая переменная, которую она заменяет.
person finnw    schedule 28.03.2009

В пакетных файлах я часто использую АД.

Нравиться:

some_command || GOTO HELL

...

HELL: 

echo "Ouch, Hot!"
person Assaf Lavie    schedule 28.03.2009

  • «очистка», если она стоит перед освобождением некоторых ранее выделенных ресурсов (или аналогичная работа в разделе «наконец-то»)
person jonny    schedule 28.03.2009

В фортране я использую goto для отката и обычно начинаю с 999 назад (в фортране метки goto только числовые)

    call foo(err)
    if (err /= 0) goto 999

    call bar(err)
    if (err /= 0) goto 998

    call baz(err)
    if (err /= 0) goto 997

    ! everything fine
    error = 0
    return

997 call undo_bar()
998 call undo_foo()
999 error = 1
    return

Я также использую метки больше 1000, если по какой-то причине хочу пропустить часть отката.

В C и других языках я бы использовал номер отката (например, rollback1, rollback2), чтобы по метке было ясно, что вы собираетесь выполнить откат. По сути, это единственная веская причина для использования goto.

person Stefano Borini    schedule 28.03.2009

Обычно мне это нужно только для 2 случаев. Таким образом, мои метки перехода имеют вид begin или finally.

person rlbond    schedule 28.03.2009