En 1968, Edsger Dijkstra a écrit une célèbre lettre au rédacteur en chef de Communications de l'ACM GOTO est considéré comme nuisible dans laquelle il a exposé les arguments en faveur de la programmation structurée avec boucles while et si...alors...autrement conditionnelles. Lorsque GOTO est utilisé pour remplacer ces structures de contrôle, le résultat est très souvent code spaghetti . La quasi-totalité des langages de programmation utilisés aujourd'hui sont des langages de programmation structurés, et l'utilisation des GOTO a été pratiquement éliminée. En fait, Java, Scala, Ruby et Python n'ont pas de GOTO. goto
du tout.
Le C, le C++ et le Perl disposent toujours d'une commande GOTO, et il existe des situations (en C en particulier) où une commande GOTO peut être utilisée. GOTO est utile Par exemple, une instruction break qui sort de plusieurs boucles, ou comme moyen de concentrer le code de nettoyage à un seul endroit dans une fonction même s'il existe plusieurs façons de terminer la fonction (par exemple, en renvoyant des codes d'erreur à plusieurs moments de la progression d'une fonction). Mais en général, son utilisation doit être limitée à des modèles de conception spécifiques qui l'exigent de manière contrôlée et reconnue.
(En C++, il est préférable d'utiliser un RAII ou un ScopeGuard (plus) au lieu d'utiliser GOTO pour le nettoyage. Mais GOTO est un idiome fréquemment utilisé dans le noyau Linux ( une autre source ) qui est un excellent exemple de code C idiomatique).
La bande dessinée XKCD est une blague sur la question suivante : "Le GOTO doit-il toujours être considéré comme nuisible alors que certains modèles de conception spécifiques sont grandement favorisés par son utilisation ?".
58 votes
I d
2 votes
T b
10 votes
T
1 votes
Consultez l'article original de Dijkstra Aller à la déclaration considérée comme nuisible . Mais n'oubliez pas le Programmation structurée avec les instructions goto qui explique pourquoi vous pouvez les utiliser et comment ils peuvent s'intégrer plutôt que s'opposer aux objectifs de la programmation structurée.
0 votes
La réponse avec le même graphique sur un autre poste.