Hallo,
Auch bin ich zunehmend skeptischer gegenüber mehreren Ausstiegspunkten aus einer Funktion.
Ich nicht, im Gegenteil: Sobald das Ergebnis einer Funktion feststeht, beende ich sie. Ich finde das übersichtlicher [...]
Geht mir auch so. Zur Zeit beschäftige ich oft mit dem Umschreiben von altem Code früherer Kollegen, denen anscheinend nicht nur das DRY-Prinzip unbekannt ist bzw. war, sondern die auch *immer* eine Funktion erst am Ende des Funktionscodes verlassen. Das sieht dann so aus:
if (!bli) {
if(bla){
if(blubb){
result = true;
}
else {
result = false;
}
}
}
return result;
Das führt zu unnötig vielen Einrückungsebenen und ist schon allein dadurch schwerer zu verstehen. Da ich den Code in der Regel von oben nach unten lese, meine ich dann immer, die Funktion seit noch fertig, und scrolle mich weiter durch, nur um dann festzustellen, dass ja gar nichts mehr kommt und die Verabeitung schon lange zu Ende ist. Statt
if (!bli) {
/* viele Zeilen Code */
}
Schreibt man doch besser
if (bli) { return; }
/* viele Zeilen Code */
und spart sich die vielen Einrückungen sowie die unnötige Scrollerei. Schon in der ersten Zeile wird klar, was im Fall von bli passiert, nämlich nichts.
Damit nicht den Überblick über mehrere Ausstiegspunkte verliert, bieten sich auffällige Kommentare an. In mancher Entwicklungsumgebnug werden sie ohnehin automatisch deutlich herausgehoben.
Gruß, Don P