Je programme en Java depuis plusieurs années maintenant, mais je suis récemment retourné à l'école pour obtenir un diplôme officiel. J'ai été assez surpris d'apprendre que, lors de ma dernière mission, j'ai perdu des points pour avoir utilisé une boucle comme celle ci-dessous.
do{
//get some input.
//if the input meets my conditions, break;
//Otherwise ask again.
} while(true)
Maintenant, pour mon test, je suis juste en train de rechercher des entrées de console, mais on m'a dit que ce type de boucle est déconseillé parce que l'utilisation break
s'apparente à goto
, nous ne le faisons tout simplement pas.
Je comprends parfaitement les pièges de goto
et son cousin Java break:label
, et j'ai le bon sens de ne pas les utiliser. Je me rends également compte qu'un programme plus complet fournirait d'autres moyens d'évasion, par exemple pour simplement mettre fin au programme, mais ce n'était pas une raison que mon professeur a citée, alors ...
Qu'est-ce qui ne va pas do-while(true)
?
break
est probablement bien intentionnée, mais en fait mal comprise. Vous pouvez peut-être éduquer votre professeur à ce sujet;) D'après mon expérience, les professeurs ne connaissent pas grand-chose à l'art de la programmation.
do {} while (true)
c'est équivalent à while(true) {}
et ce dernier est de loin la forme la plus conventionnelle et beaucoup plus claire.
break
, il devrait essayer de programmer dans un langage sans lui. Cela ne prend pas trop de boucles avant que vous ne le souhaitiez!