Je ne suis pas d'accord avec vous tous les jeunes whippersnappers sur celui-ci.
Utiliser le retour au milieu d'une méthode, nulle ou non, est une très mauvaise pratique, pour des raisons qui ont été énoncées assez clairement, il y a près de quarante ans, par le regretté Edsger W. Dijkstra, à partir de la célèbre déclaration GOTO considérée comme nuisible ", et continuant dans" Programmation structurée ", par Dahl, Dijkstra et Hoare.
La règle de base est que chaque structure de contrôle et chaque module doivent avoir exactement une entrée et une sortie. Un retour explicite au milieu du module enfreint cette règle et rend beaucoup plus difficile de raisonner sur l'état du programme, ce qui à son tour rend beaucoup plus difficile de dire si le programme est correct ou non (ce qui est une propriété beaucoup plus forte que "que cela semble fonctionner ou non").
La «déclaration GOTO considérée comme nuisible» et la «programmation structurée» ont lancé la révolution de la «programmation structurée» des années 1970. Ces deux éléments sont les raisons pour lesquelles nous avons aujourd'hui if-then-else, while-do et d'autres constructions de contrôle explicites, et pourquoi les déclarations GOTO dans des langages de haut niveau sont sur la liste des espèces en danger. (Mon opinion personnelle est qu'elles doivent figurer sur la liste des espèces disparues.)
Il convient de noter que Message Flow Modulator, le premier logiciel militaire qui a JAMAIS passé les tests d'acceptation du premier essai, sans écarts, dérogations ou verbiage "ouais, mais", a été écrit dans une langue qui n'avait même pas une instruction GOTO.
Il convient également de mentionner que Nicklaus Wirth a changé la sémantique de l'instruction RETURN dans Oberon-07, la dernière version du langage de programmation Oberon, ce qui en fait un élément final de la déclaration d'une procédure typée (c'est-à-dire une fonction), plutôt qu'un instruction exécutable dans le corps de la fonction. Son explication du changement dit qu'il l'a fait précisément parce que le formulaire précédent était une violation du principe à une sortie de la programmation structurée.