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'

¿Fue útil?

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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top