2009-03-28 1 views
4

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

Пожалуйста, воздержитесь от классических «Гото зла и есть код живых дискуссий»

+0

Разве это не зависит от того, для чего они используются? Я предпочитаю называть * каждый * идентификатор после чего-то значимого в контексте, который они используют. Конечно, рассказывая нам, где вы их используете, может открыться для обсуждения того, что вы могли бы использовать вместо gotos. Везет, как утопленнику. :) – jalf

+0

Я бы также утверждал, что если вам требуется соглашение об именах, это звучит так, будто вы их используете. ;) – jalf

ответ

5

Мои имена меток почти всегда попадают в одну из этих моделей:

  • Вызывается «перезагрузка» для перезагрузки набор вложенных циклов, так как изменение недействительным что-то
  • Вызывается «exit» или «return», прямо перед оператором return, и только там из-за оператора трассировки, который регистрирует возвращаемое значение для отладки
  • Имеет такое же имя, как логические переменные, что он заменяет
3

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

Как:

some_command || GOTO HELL 

... 

HELL: 

echo "Ouch, Hot!" 
2
  • «зачистка», если стоять перед освобождением некоторых previosly выделенных ресурсов (или подобного рода «наконец» работы секции)
0

Я обычно это нужно только для 2-х случаев. Таким образом, мои метки goto либо начинаются, либо наконец.

1

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

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 и на других языках я бы использовал rollbacknumber (например rollback1, rollback2), так что с этикетки видно, что вы собираетесь откатываться. Это, по сути, единственная хорошая причина для использования goto.

Смежные вопросы