• [^] # vive le goto (parfois)

    Posté par . En réponse à la dépêche Comparatif jsp/php. Évalué à 0.

    Le goto peut être utiliser pour améliorer la lisibilité (on evite de ce trainer une variable qui indique l'état de la fonction).

    Exemple pour la gestion d'erreur :
    int toto(void) {
    int all_ok = 0 ;
    if ( .... == probleme ) {
    goto erreur ;
    }
    .
    .
    .
    if ( ... == probleme ) {
    goto erreur ;
    }
    .
    .
    .
    return ok ;
    erreur:
    // boulot sur erreur
    return pas_ok ;
    }

    Visual Basic propose l'excellent "on error goto".


    Exemple pour sortir de beaucoups de boucle imbriqués.

    qqc * chercher(...) {
    for(....) {
    while {
    for(....) {
    if (c'est presque le bon) {
    .
    .
    .
    if (c'est le bon) {
    goto trouve ;
    }
    }
    }
    for(....) {
    if (c'est le bon) {
    goto trouve ;
    }
    }
    }
    }
    return NULL ;
    trouve:
    // faire qqc
    return qqc ;
    }

    P.S.: désolé pour ce code pas indenté mais dacode n'autorise pas la borne "<pre>" ni les "&nbsp;"

    Dacode pourrait autoriser "<pre>" mais dans ce cas utiliser la fonction wordwrap() (cf:http://www.php.net/manual/en/function.wordwrap.php(...)) pour éviter les lignes trop longues.