IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Que pensez vous du goto [Débat]


Sujet :

C

  1. #81
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Disons, que dans la theorie, le goto peut-etre utilise mais il est rare qu'il soit necessaire ou qu'il soit meme souhaitable. Son utilisation rend l'algorithme difficilement comprehensible par un oeil externe (pareil que pour le break ou le continue) et cela donne souvent du code spaghetti (qui va dans tous les sens)

    Je le deconseille...

  2. #82
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Si je ne me trompe pas, un mathématicien a démontré qu'on pouvait en toute occasion se passer du goto. Ceci dit, pour se sortir d'un imbrication de boucle ça peut-être utile, mais c'est en général (99,99 % des cas) le signe d'une (très) mauvaise analyse/conception de l'algorithme.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #83
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 148
    Par défaut
    Disons qu'il faut l'utiliser avec modération.

    Dans les boucles, il peut être utilisé à la place du break. Personellement je trouve que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(x=0; x<100; x++)
        if (val == tab[x])
            goto FinRecherche
    est plus parlant que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(x=0; x<100; x++)
        if (val == tab[x])
            break;

  4. #84
    Membre chevronné
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Par défaut
    Dans ce cas à la place du "for" autant faire un "while" est on évite encore ces break ou goto assez moche

  5. #85
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Rémiz :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(x=0; x<100; x++) 
        if (val == tab[x]) 
            goto FinRecherche
    Personnellement, je n'aime pas. Pas tellement à cause du goto de ce code mais à cause de la présence d'un label FinRecherche , car on ne sait pas sans TOUT lire à partir de quel(s) endroit(s) du code on peut arriver là.
    fearyourself :
    Son utilisation rend l'algorithme difficilement comprehensible par un oeil externe (pareil que pour le break ou le continue)
    Oui, mais au moins, avec break ou continue, on sait dans quelle direction du code se trouve la suite. Et le code est du type spaghetti mais peigné

  6. #86
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Moi perso, en plus de deux ans de C, jamais utilisé de goto ou de jmp
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #87
    Membre expérimenté Avatar de Rupella
    Inscrit en
    Février 2005
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 286
    Par défaut
    Les standards de l'industrie imposent comme règle de ne jamais
    utiliser de goto !

    Se référer aux règles MISRA par exemple...
    Après, faut voir si il faut rester dans l'amateurisme...

  8. #88
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut ben
    Je m'en suis servi à quelque reprise lorsque je dévellopais autour du noyau linux, en mode kernel par exemple. Par contre pour un programme utilisateur je ne vois pas pourquoi utiliser un goto.

    Je suis certainement trop limité pour comprendre.

  9. #89
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9
    Par défaut
    Citation Envoyé par Rémiz
    Disons qu'il faut l'utiliser avec modération.

    Dans les boucles, il peut être utilisé à la place du break. Personellement je trouve que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(x=0; x<100; x++)
        if (val == tab[x])
            goto FinRecherche
    est plus parlant que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(x=0; x<100; x++)
        if (val == tab[x])
            break;
    Pour ces codes, je préfère écrire de la façon suivante qui est plus lisible, plus parlant et plus concise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(x=0; x<100 && val != tab[x]; x++);
    En fait en regardant bien les deux codes, on voit bien qu'il ne s'agit pas de la même conception.

    Dans le code de rémiz, on dit

    Pour chaque valeur de x incrémentée de 1, tant que x est strictement inférieure à 100, on teste si val est égal à tab[x]. Si ce test est valide on saute à un endroit appelé FinRecherche (avec goto) ainsi la boucle est stopée ou on sort de la boucle for (avec break.

    Dans mon code, on dit

    Pour chaque valeur de x incrémentée de 1, tant que la valeur de x est strictement inférieure à 100 ET que val est différent de tab[x], on continue la boucle. Si l'une des deux conditions n'est pas respectée, la boucle est stoppée.

    Il n'y a plus d'instruction pour dire que faire lorsque une condition est vérifiée comme c'est le cas dans le code de Rémiz.


    Sinon personnellement, on m'a fortement déconseillé le goto car ça va devenir illisible au fur et à mesure du développement des logiciels. Le break et continue est à utiliser avec modération.

    Néamoins J'utilise break uniquement pour le switch.

    Franchement, je vais répéter ce qui a été dit dans ce topic, le goto casse la logique d'un programme, car quand on lit un programme et dés qu'on aperçoit un goto, il faudra chercher l'endroit pour continuer la logique de lecture ensuite revenir au point de goto pour voir si ça continue juste après la ligne ou il y a goto

    C'est casse tête chinois pour la lecture.

    Tandis que sans goto, on s'y prend le plaisir de lire du début jusqu'a la fin du programme et comprendre le programme

  10. #90
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Par défaut
    slt,
    En ce qui concerne le goto, une ancienne légende dit qu'il est trop attaché à l'assembleur. Il fait peur à certains, c'est un peu une chasse au sorcière. Qu'importe, il faut savoir ce que tu veux, si ton programme est à usage perso, non probleme, sinon commente. Mais il ne faut pas barnir certaines formes du langage sous prétexte que dans les temps anciens, bien des origines de bug venait d'un goto mal controlé...

    M'enfin n'oublies pas Java bien et C tant mieux


    8)

  11. #91
    vic
    vic est déconnecté
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Par défaut
    J'apporte mon grain de sel, y'a pas de raison

    A mon avis le principal reproche qu'on peut faire au goto (et à raison), c'est de casser l'aspect structuré du code, et surtout permettre des sauts en arrière, ce qui crée un flux programmatique qui se croise, le fameux "spaghetti code". Mais alors que dire des break, des continue, des return lorsqu'ils ne sont pas en fin de fonction ? Que dire même des switch ?

    L'usage du goto se justifie dans deux cas bien précis :

    Permier cas, traitement d'erreur. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    int fonction() {
        /* traitement 1 ... */
        if( <erreur> ) {
            /* nettoyage  */
            return <code_erreur_1>;
        }
     
        /* traitement 2 ... */
        if( <erreur 2> ) {
            /* nettoyage  */
            return <code_erreur_2>;
        }
     
        /* traitement 3... */
        if( <erreur 3> ) {
            /* nettoyage  */
            return <code_erreur_3>;
        }
     
        // etc ...
     
        /* nettoyage  */
        return <ok>;
    }
    Evidement on a un gros problème de code redondant, difficile à changer. On peut avantageusement le remplacer par la chose suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    int fonction() {
        int ret = <ok>;
     
        /* traitement 1 ... */
        if( <erreur> ) {
            ret = <code_erreur_1>;
            goto fin;
        }
     
        /* traitement 2 ... */
        if( <erreur 2> ) {
            ret = <code_erreur_2>;
            goto fin;
        }
     
        /* traitement 3... */
        if( <erreur 3> ) {
            ret = <code_erreur_3>;
            goto fin;
        }
     
        // etc ...
     
        fin:
        /* nettoyage  */
        return ret;
    Certains pourront dire qu'on peut utiliser une fonction dans ce cas, mais celà peut ajouter une complexité inutile s'il y a beaucoup de termes à traiter et de plus on doit également modifier les paramètres de la fonction si on doit modifier le code de nettoyage.


    Deuxième cas, pouvoir sortir rapidement d'une construction très complexe et remonter une erreur. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    while( <...> ) {
        /* traitements ...*/
        if( <...> ) {
            /* traitements ... */
        } else {
            /* traitements ...*/
            for( <...> ) {
                if( <...> ) {
                    /* traitements ...*/
                    if( <erreur> )
                        goto fin_while;
                    /* traitements ...*/
                } else if( <...> ) {
                    /* traitements ...*/
                } else {
                    /* traitements ...*/
                    if( <erreur> )
                        goto fin_while;
                    /* traitements ...*/
                }
            }
            /* traitements ...*/
        }
        /* traitements ...*/
        fin_while:
    }
    Imaginez le code précédent avec 10 ou 15 niveaux d'imbrications et autant de remontées d'erreur possibles (on trouve ce genre de code dans le noyau linux en particulier). Je défie quiconque d'arriver à écrire quelquechose de lisible en utilisant uniquement des flags et des tests Le goto permet d'obtenir un code plus simple et plus lisible et semble donc ici le meilleur choix.

    Je justifie ma position en disant la chose suivante : si une technique de programmation rend à la fois le code plus clair et plus efficace, alors c'est elle qu'on doit choisir. Baser sa décision sur un dogmatisme quasi pavlovien ("le goto c'est mal") ne mène nulle part.

  12. #92
    Membre éprouvé Avatar de amaury pouly
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 157
    Par défaut
    Je voudrais juste dire mon avis personnel:
    certes le goto en général c'est mal et moi même je l'utilise très rarement et je le déconseille
    MAIS
    il est des cas très particulier où il me semble qu'il peut être utilisé sans risque et surtout il est des cas où ne pas l'utiliser peut rendre le code encore pire . Je ne ferais que citer le cas des imbrications multiples à condition que les boucles ne soient pas trop grandes(dans ce cas mieux vaut une fonction et un test) .
    Je citerais aussi un cas très particulier qui m'est déjà arrivé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    switch(...)
    case
    ....
    case
    ....
    case
    ...
    case <machin>
      if <truc>
         goto Lcase_truc
      else
        ....
    case
    ...
    case ..
    Lcase_truc:
    ....
    Là c'est vraiment particulier mais dans certaines circonstances mieux vaut ne pas faire autrement à mon avis

  13. #93
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par amaury pouly
    Là c'est vraiment particulier mais dans certaines circonstances mieux vaut ne pas faire autrement à mon avis
    Dans cet exemple particulier, l'interet du goto est, si j'ai bien compris, d'executer dans le if() le meme code que dans un des case. Personellement, j'aurais plutot ecrit une fonction effectuant ce traitement et appele la fonction dans le if et dans le case.

  14. #94
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par vic
    J'apporte mon grain de sel, y'a pas de raison

    A mon avis le principal reproche qu'on peut faire au goto (et à raison), c'est de casser l'aspect structuré du code, et surtout permettre des sauts en arrière, ce qui crée un flux programmatique qui se croise, le fameux "spaghetti code". Mais alors que dire des break, des continue, des return lorsqu'ils ne sont pas en fin de fonction ? Que dire même des switch ?
    La portée des break et des continue est définie (bloc de structure de code). Avec un goto, c'est plus flou et on peut sortir brutalement d'une structure de code. Quand aux return multiples, je les combat aussi ardemment que les goto sauvages.
    L'usage du goto se justifie dans deux cas bien précis :

    Permier cas, traitement d'erreur. Exemple :
    Ok.
    Deuxième cas, pouvoir sortir rapidement d'une construction très complexe et remonter une erreur.
    Eventuellement, mais une variable 'err' bien gérée (0 = OK, non 0 = ERR) est très simple à intégrer dans les conditions des structures de code.

    Je pense que tout le monde est d'accord pour dire 'le goto injustifié c'est mal tant qu'il existe une alternative simple et viable'. Ce discours s'adresse surtout aux débutants, afin de les inciter à utiliser les structures de codes qui couvrent 100% des cas. Ensuite, si on veut simplifier certains traitement 'exceptionnels', peut être. Mais il est certain que l'on peut toujours s'en passer.

  15. #95
    Membre éprouvé Avatar de amaury pouly
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 157
    Par défaut
    Dans cet exemple particulier, l'interet du goto est, si j'ai bien compris, d'executer dans le if() le meme code que dans un des case. Personellement, j'aurais plutot ecrit une fonction effectuant ce traitement et appele la fonction dans le if et dans le case.
    Je ne l'ai pas fait car cette fonction est appelée trop souvent et puis que le traitement n'est pas très long(3-4 lignes) . Certes on aurait pû inliner mais pour moi çà n'en valait pas la peine .
    D'ailleurs dans cette structure il y avait d'autres cas qui rammenaient au cas.
    Néanmoins c'est exceptionnel comme utilisation .

  16. #96
    Membre émérite
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 511
    Par défaut pas de goto dans le C
    les gotos permettent de casser la structure logicielle. Typiquement, on peut faire des trucs comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    int Fct1(int Param)
    {
       int ReturnValue;
       if (Param)
       {
          goto Toto;
          ReturnValue=1;
       }
       else
       {
          ReturnValue=2;
       }
     
    Toto:
      return (ReturnValue);
    }
    Ici c'est facile, on a généré au beau bug facilement visible, mais parfois l'algorithme est plus complexe, et on ne voit pas ce type d'erreur.

    Structurer correctement son logiciel permet de le rendre plus robuste, et plus facile à maintenir.
    Si des normes d'écritures en langage C on dit qu'il ne fallait surtout pas l'utiliser, ce n'est pas pour rien.

    A+
    Page sur Developpez : http://pbriand.developpez.com

  17. #97
    Membre Expert
    Avatar de lakitrid
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 535
    Par défaut
    Personnelement je n'ia utilisé les goto que dans un domaine :
    La programmation noyau Linux. Au début j'étais réticent à utiliser le Goto, mais au final, s'il est correctement utiliser il peut aider à la lisibilité du code.
    J'utilisais donc le goto toujours en descendant pour la gestion des erreurs
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    res0=...;
    if(!res1)
       goto err1;
    <...>
    if(!res2)
       goto err2;
    <...>
    err1:
       free(res0);
    err2:
       free(res1);
    <...>
       return;
    il est clair qu'il est toujours possible de faire sans, mais si on cadre bien son emploi, on peut alleger le code sans perdre en lisibilité et même en gagner un peu avec justement l'allegement du code.

  18. #98
    Invité de passage
    Inscrit en
    Janvier 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1
    Par défaut
    Je cite "Méthodologie de la programmation en C" de Jean Pierre Braquelaire , une référence dans le domaine de la prog !!! Mon mentor !! Un ancien prof de la fac il y a longtemps...

    "

    Le branchement est à utiliser avec la plus grande prudence. Cependant, il est parfois utile pour simuler des échappements non implémentés en C (essentiellement la sortie de plusieurs boucles imbriquées).

    On ne doit l'utiliser seulement si les intrusctions break et continue sont insuffisantes. Par exemple, on ne peut, avec l'instruction break, sortir d'une boucle qui se trouve dans un aiguillage imbriqué dans la boucle. Dans ce cas, Break permet seulement de sortir de l'aiguillage.

    La sortie de plusieurs boucles imbriquées est également un cas que l'on ne peut gérer avec un échappement. C'est le cas de l'exemple suivant, présentant le parcours d'une liste de listes avec arrêt sur le premier élément vérifiant une condition donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                     for (jour = 0; jour < 7; jour++)
                            for (heure = 1; heure < 24; heure++)
                                 if (semaine[jour][heure]<semaine[jour][heure-1])
                                 goto baisse;
                    baisse:
    On peut éviter ici l'utilisation du branchement en plaçant l'instruction dans
    une fonction, dont on sort au moyen d'un return :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    void recherche(int *j, int *h)
    {
        int jour, heure;
        for (jour = 0; jour < 7; jour++)
              for (heure = 1; heure < 24; heure++)
                   if (semaine [jour] [heure] <Semaine [jour] [heure-1])
                      {
                        *j = jour;
                        *h = heure;
                        return;
                       }     
        *j = jour;
        *h = heure;
    }
    Cependant, la gestion des paramètres par référence alourdit l'écriture et entraîne une duplication de code. Il est plus préférable d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void recherche(int *j, int *h)
    {
        int jour, heure;
        for (jour = 0; jour < 7; jour++)
              for (heure = 1; heure < 24; heure++)
                   if (semaine[jour][heure]<semaine[jour][heure-1])
                   goto fin_de_boucle;
     
        fin_de_boucle:
        *j = jour; 
        *h = jour;
    }
    Une autre utilisation classique du saut est la gestion d'erreurs, avec interruption du traitement (goto erreur) ou reprise (goto début). Tous ces
    exemples d'utilisation du branchement sont construits sur le même modèle: la sortie de plusieurs blocs imbriqués. Il est par contre préférable d'éviter d'utiliser un goto pour se déplacer dans un bloc ou pour rentrer dans un bloc de profondeur inférieure.

    cela devrait clore un éternel débat qui n'a plus lieu d'être !!!

  19. #99
    Membre confirmé
    Profil pro
    responsable de développement
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : responsable de développement

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Par défaut
    Salut,

    Moi non plus j'aime pas les goto... il fut un temps où je les virais... Pourtant y'a pas que lui qui n'est pas structuré :
    Mais dans un switch() case: break...
    le break est un goto comme le continue dans un while() ou for(;

    Souvent en virant un goto (mis par qq d'autre ), j'ai rendu le code moins joli (question de goût) mais je préfère...

    v'la question de goût et d'expérience...

  20. #100
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Moi non plus j'aime pas les goto... il fut un temps où je les virais... Pourtant y'a pas que lui qui n'est pas structuré :
    Mais dans un switch() case: break...
    Je trouve tout de même une instruction switch beaucoup plus structurée qu'un goto. Contrairement au goto, je ne trouve pas qu'elle nuit à la lisibilité du code. Perso, je n'ai jamais utilisé la possibilité offerte par goto.

    Meilleures salutations

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Que pensez-vous des générateurs de doc PHP ?
    Par Nonothehobbit dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 64
    Dernier message: 10/07/2007, 10h17
  2. Que pensez vous de filemaker
    Par thpopeye dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 14/06/2007, 15h20
  3. Que pensez vous du nouveau kernel 2.6 ?
    Par GLDavid dans le forum Administration système
    Réponses: 58
    Dernier message: 02/08/2004, 15h45
  4. [Débat] Que pensez-vous des langages à typage dynamique?
    Par Eusebius dans le forum Langages de programmation
    Réponses: 14
    Dernier message: 16/06/2004, 12h12
  5. Que pensez vous du mariage ASP Flash?
    Par tyma dans le forum Flash
    Réponses: 4
    Dernier message: 09/07/2003, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo