In einer Funktion, die keine Nebeneffekte hat, gibt es keinen guten Grund, mehr als eine Rückgabe zu haben, und man sollte sie in einem funktionalen Stil schreiben. Bei einer Methode mit Seiteneffekten sind die Dinge sequenzieller (zeitindiziert), daher schreiben Sie im imperativen Stil und verwenden die Rückgabeanweisung als Befehl zum Beenden der Ausführung.
Mit anderen Worten, bevorzugen Sie, wenn möglich, diesen Stil
return a > 0 ?
positively(a):
negatively(a);
hierüber
if (a > 0)
return positively(a);
else
return negatively(a);
Wenn Sie mehrere Schichten von verschachtelten Bedingungen schreiben, gibt es wahrscheinlich einen Weg, wie Sie das umstrukturieren können, zum Beispiel mit Prädikatsliste. Wenn Sie feststellen, dass Ihre "ifs" und "els" syntaktisch weit voneinander entfernt sind, sollten Sie diese in kleinere Funktionen aufteilen. Ein bedingter Block, der sich über mehr als einen Bildschirm voll Text erstreckt, ist schwer zu lesen.
Es gibt keine feste Regel, die für alle Sprachen gilt. Eine einzige Return-Anweisung macht Ihren Code noch lange nicht gut. Aber guter Code wird es Ihnen erlauben, Ihre Funktionen auf diese Weise zu schreiben.
25 Stimmen
Ich stimme nicht zu, dass die Frage sprachenfeindlich ist. Bei einigen Sprachen ist die Mehrfachrückgabe natürlicher und bequemer als bei anderen. Ich würde mich eher über frühe Rückgaben in einer C-Funktion beschweren als in einer C++-Funktion, die RAII verwendet.
3 Stimmen
Diese Frage ist eng damit verbunden und enthält ausgezeichnete Antworten: programmers.stackexchange.com/questions/118703/
0 Stimmen
Sprachunabhängig? Erklären Sie jemandem, der eine funktionale Sprache verwendet, dass er einen Return pro Funktion verwenden muss :p