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

Discussion :

Pourquoi les GOTO ne sont pas appréciés ?

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Par défaut Pourquoi les GOTO ne sont pas appréciés ?
    Bonsoir tout le monde (je vais essayer de rester court),

    Alors voilà, je me pose cette question depuis deux minutes. Pourquoi les GOTO ne sont pas vraiment appréciés ? Imaginons par exemple un programme, qui demande à l'utilisateur à la fin du programme s'il veut rejouer (en prétendant que c'est un jeu par ex.). A la place de faire un gros do {} while(!rejouer), personnellement je préfère faire un goto début, c'est beaucoup plus clair et logique (enfin pour moi du moins).

    Je vois pas pourquoi les GOTO sont dépréciés (si j'ai tort dites-le moi), à moins que ce soit une histoire de rapidité, je vois pas pourquoi ne pas les utiliser.

    Voilà, merci d'avance,
    Hoffa.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Par défaut
    Citation Envoyé par Hoffa Voir le message
    Bonsoir tout le monde (je vais essayer de rester court),[...]
    Je vois pas pourquoi les GOTO sont dépréciés (si j'ai tort dites-le moi), à moins que ce soit une histoire de rapidité, je vois pas pourquoi ne pas les utiliser.

    Voilà, merci d'avance,
    Hoffa.
    La question a déjà été traité je pense.

    Pour faire court, « parce que la plupart des personnes l'utilisent comme solution de facilité et donc en font n'importe quoi. »

    Le grand Hoare a écrit là dessus aussi. (est-ce bien lui ?)

  3. #3
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Voici le texte que St Dijkstra écrit pour bannir goto des moeurs :
    http://www.cs.utexas.edu/users/EWD/t...xx/EWD215.html
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    D'une manière plus générale(et plus résumée) : GOTO rend progressivement le code illisible. Le piège est dans l'aspect progressif. Quand on a un programme de 30 lignes, et 2 goto, ça reste parfaitement lisible. Quand on a 300 lignes, et 20 goto, c'est la prise de tête. Quand on a 3000 lignes, et 200 goto, on met à la poubelle, et on recommence(mon projet actuel). Alors qu'un code avec des petits blocs cohérents, lui, peut grossir à travers les années et rester à peu près lisible.

    Ce qui ramène à une autre erreur classique du débutant : croire que dès que ça marche, le programme est terminé. 70% du boulot, c'est de la maintenance - donc du travail sur de l'existant(le plus souvent des rajouts). Et c'est là que le goto est un tueur.

    Dans le cadre de ton jeu, une démarche structurée te pousserait à faire un bloc(une procédure, par exemple, ça dépend du langage) "jeu", mais qui ne serait pas ton point d'entrée. Ton point d'entrée serait un menu avec 2 options : "jouer/sortir". Jouer appelant ta procédure "jeu". C'est un peu lourd, mais ça permet à quiconque de lire ton code, voire même à toi de ne pas t'y perdre quand tu y reviendra dans 2 ans.....

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Il y a déjà eu plusieurs discussions là dessus :
    http://www.developpez.net/forums/d43...o-deconseille/

    Il me semble qu'il y en a également une autre qui fait 10 pages mais je n'arrive pas à mettre la main dessus

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 615
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 615
    Billets dans le blog
    2
    Par défaut
    fais-tu référence à celle-ci :

    Que pensez-vous du GoTo

    ?

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    fais-tu référence à celle-ci :

    Que pensez-vous du GoTo

    ?
    Ah oui, c'est ça. La fameuse Je ne me rappelais plus qu'elle était dans le forum C.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/08/2009, 07h03
  2. Pourquoi les mails ne sont ils pas envoyés?
    Par Sunsawe dans le forum Développement
    Réponses: 3
    Dernier message: 13/04/2007, 00h49
  3. Réponses: 7
    Dernier message: 22/09/2006, 02h28
  4. Réponses: 1
    Dernier message: 04/12/2005, 19h02
  5. Les Langages ne sont pas tous les mêmes ......
    Par Max Payne dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 28/08/2003, 14h51

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