Convenciones de nomenclatura para las etiquetas GoTo
-
22-08-2019 - |
Pregunta
¿Cómo se nombra etiquetas GoTo? Yo uso a menudo tan rara vez que estoy teniendo dificultades para encontrar buenos nombres.
Por favor, abstenerse de la clásica 'Goto es malo y comer su código discusión viva'
Solución
Mis nombres de etiqueta casi siempre caen en uno de estos patrones:
- Llamado "reinicio", para reiniciar un conjunto de bucles anidados ya que un cambio ha invalidado algo
- Llamado "salida" o "retorno", justo antes de la instrucción de retorno, y sólo está allí debido a una sentencia trace que registra el valor de retorno para depurar
- tiene el mismo nombre que la variable booleana que reemplaza
Otros consejos
En los archivos por lotes que a menudo utilizan INFIERNO.
Al igual que:
some_command || GOTO HELL
...
HELL:
echo "Ouch, Hot!"
- "limpieza" si reposar antes de liberar algunos recursos asignados Anteriormente: (o el mismo tipo de 'finalmente' sección de trabajo)
en Fortran, utilizo Goto para reversiones, y normalmente empezar desde 999 hacia atrás (en Fortran, etiquetas Goto son solamente numérico)
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
También utilizo las etiquetas superiores a 1.000 si por alguna razón quiero omitir la parte de reversión.
En C y otros idiomas, me gustaría utilizar rollbacknumber (por ejemplo. Rollback1, rollback2), por lo que es claro a partir de la etiqueta que se va a deshacer. Esta es básicamente la única buena razón para usar Goto.
Por lo general sólo lo necesito para 2 casos. Como tal, mis etiquetas Goto son o comienzan o fin .