Programuję w Javie od kilku lat, ale niedawno wróciłem do szkoły, aby uzyskać formalny stopień naukowy. Byłem bardzo zaskoczony, gdy dowiedziałem się, że podczas ostatniego zadania straciłem punkty za użycie pętli takiej jak ta poniżej.
do{
//get some input.
//if the input meets my conditions, break;
//Otherwise ask again.
} while(true)
Teraz do testu szukam tylko danych wejściowych konsoli, ale powiedziano mi, że tego rodzaju pętla jest odradzana, ponieważ używanie break
jest podobne goto
, po prostu tego nie robimy.
Rozumiem w pełni pułapki goto
i kuzyna Javy break:label
i mam zdrowy rozsądek, aby z nich nie korzystać. Zdaję sobie również sprawę, że bardziej kompletny program zapewniłby inne sposoby ucieczki, powiedzmy na przykład, aby po prostu zakończyć program, ale to nie był powód, o którym wspomniał mój profesor, więc ...
Co jest nie tak z do-while(true)
?
break
prawdopodobnie ma sens, ale w rzeczywistości jest źle zrozumiane. Być może możesz wyszkolić swojego profesora na ten temat;) Z mojego doświadczenia wynika, że profesorowie niewiele wiedzą o rzemiośle programowania.
do {} while (true)
jest to równoważne, while(true) {}
a ta ostatnia jest zdecydowanie bardziej konwencjonalna i znacznie bardziej przejrzysta.
break
, powinien spróbować programować w języku bez niego. Nie potrzeba zbyt wielu pętli, zanim będziesz tego chciał!