Hallo,
Die seit anno domini gegen
goto
angeführten Argumente lassen sich zu einem gewissen Maß auf alle Sprung-Anweisungen übertragen, d.h.break
undcontinue
in Schleifen
naja, die Verallgemeinerung ist mir doch etwas zu allgemein. Die goto-Anweisung -wenn die Sprache sie bietet- würde ich allein deshalb vermeiden, weil sie den Sprung *an eine beliebige Stelle* im Code ermöglicht. Ich hatte in den letzten 20 Jahren höchstens zwei- oder dreimal das Bedürfnis, ein goto einzusetzen, also in sehr, sehr seltenen Ausnahmefällen.
Den Einsatz von break und continue in Schleifen halte ich dagegen für völlig legitim, wenn er entsprechend dokumentiert und kenntlich gemacht wird. Da möchte ich Vinzenz unbedingt zustimmen.
Im Gegensatz zum goto führen break und continue den Programmfluss nämlich an eine genau definierte Stelle zurück: Ans Ende bzw. an den Anfang einer Schleife.
aber auch multiple
return
-Anweisungen in einer Funktion
... halte ich für völlig in Ordnung. Es liegt oft in der Natur der Sache, dass sich innerhalb der Funktion mehrere, voneinander unabhängige Zweige ergeben, deren Kontrollfluss von der Logik innerhalb der Funktion nicht mehr konvergiert. In jedem dieser Zweige halte ich ein return dann für angemessen und richtig, wenn das Ergebnis feststeht und keine weiteren Aktionen mehr notwendig sind; die Konvergenz des Kontrollflusses findet dann im aufrufenden Code statt. Sogar ein switch-Konstrukt, in dem jeder Zweig mit return anstatt mit break beendet wird, finde ich in bestimmten Situationen absolut okay.
und insbesondere auch
throw
in Sprachen mit expliziter Fehlerbehandlung.
Das nutze ich selbst auch nur sehr ungern, weil ich da den Eindruck habe, dass die Nachvollziehbarkeit des Codes leidet - das mag aber auch mein subjektiver Eindruck sein.
Trotzdem gibt es für all diese Anweisungen sinnvolle Anwendungen, die sich meist um die Behandlung außergewöhnlicher Situationen drehen. Grundsätzlich sollte eine Schleife beendet werden, wenn eine vorgegebene Abbruchsbedingung erreicht wurde. Außergewöhnliche Vorgänge, die den normalen Programmablauf unterbrechen, lassen sich jedoch häufig am einfachsten durch eine Sprung-Anweisung behandeln.
Volle Zustimmung.
So long,
Martin
Auf jeden Menschen auf der ganzen Welt entfallen statistisch gesehen etwa 3000 Spinnen, wie Wissenschaftler jetzt festgestellt haben.
Wer will meine haben? Denn ich will sie bstimmt nicht.