Moin!
Ferner: Spaghetticode habe ich auch schon mit OOP gesehen, wo verschiedenen Methoden sich komplett wirr gegenseitig aufrufen und keiner mehr durchblickt, was wo wie geschieht - für schlechten Code braucht's kein goto, das bekommen die Leute, die's drauf anlegen, auch anders hin. ;-)
Würde das in jedem Fall unterstreichen.
Man kann jede Schleifenkonstruktion so neu schreiben (refactoring), dass enthaltene Anweisungen wie break und continue überflüssig werden. Umgekehrt kann man Schleifen, die diese Anweisungen vermeiden, natürlich auch so umschreiben, dass break und continue genutzt werden. Das Resultat sei jeweils identisch.
Die Frage ist jeweils, warum man die eine oder die andere Richtung beschreiten sollte. Und als Antwort kann eigentlich nur gültig sein: Um die Klarheit des Codes zu verstärken.
Wenn man sich durch geschickten Einsatz eines gut platzierten continue oder break die zusätzliche Einrückungsebene einer den gesamten Schleifeninhalt klammernden IF-Abfrage ersparen kann, oder dadurch sämtliche Abbruchbedingungen sauber an den Anfang der Schleife platziert, bevor darunter dann der komplexere Arbeitsteil kommt, dann dient das eindeutig der Klarheit des programmierten Codes und wäre zu bevorzugen.
- Sven Rautenberg