2009-03-28 7 views
4

Comment nommez-vous vos étiquettes GoTo? J'utilise rarement souvent, donc j'ai du mal à trouver de bons noms.Conventions de dénomination pour les étiquettes GoTo

S'il vous plaît s'abstenir de la classique goto est mal et manger votre code de discussion en vie '

+0

Cela ne dépend-il pas de ce à quoi ils servent? Je préfère nommer * chaque * identifiant après quelque chose de significatif dans le contexte où ils sont utilisés. Bien sûr, nous dire où vous les utilisez peut ouvrir une discussion sur ce que vous pourriez utiliser au lieu de gotos. Mauvais chance. :) – jalf

+0

Je voudrais également faire valoir que si vous avez besoin d'une convention de dénomination, il semble que vous les utilisez trop. ;) – jalf

Répondre

5

Mes noms de marque presque toujours tomber dans un de ces motifs:

  • appelé « redémarrage », pour redémarrer une série de boucles imbriquées parce qu'un changement a invalidé quelque chose
  • Appelé "exit" ou "return", juste avant l'instruction return, et est seulement là à cause d'une instruction trace qui enregistre la valeur de retour pour le débogage
  • A le même nom que la variable booléenne qu'il remplace
3

Dans les fichiers batch que j'utilise souvent ENFER.

Comme:

some_command || GOTO HELL 

... 

HELL: 

echo "Ouch, Hot!" 
2
  • « nettoyage » se reposer avant de libérer des ressources allouées previosly (ou le même genre de travaux de la section « enfin »)
0

Je habituellement seulement besoin de 2 cas. Ainsi, mes étiquettes goto sont soit commencer ou enfin.

1

En Fortran, j'utilise goto pour rollbacks, et je commence normalement à partir de 999 vers l'arrière (en Fortran, les étiquettes goto sont uniquement numériques)

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 

J'utilise aussi des étiquettes supérieure à 1000 si, pour une raison que je veux pour passer la partie rollback. En C et dans d'autres langues, j'utiliserais rollbacknumber (par exemple, rollback1, rollback2), donc il est clair à partir de l'étiquette que vous allez restaurer. C'est fondamentalement la seule bonne raison d'utiliser goto.

Questions connexes