Style Guideline Rückgabewerte von Funktionen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
finswimmer77
User
Beiträge: 13
Registriert: Freitag 14. Dezember 2012, 22:07

Hallo,
gibt es so etwas wie eine Style Guideline für Folgendes:

Ich habe eine Funktion in der ziemlich verschachtelt (ifs, elifs und elses) ein Rückgabewert ermittelt wird. Ist es nun sinnvoller oder schöner diesen Wert in einer Variablen zu speichern, zu schauen das der restliche Code übersprungen wird und ganz am Ende der Funktion ein return steht, oder sollte der return an der Stelle erfolgen wo klar ist, dass hier Schluss ist (was zwangsweise dazu führt das in der Funktion mehrmals irgendwo ein return steht).

Vielen Dank für eure Meinungen.

fin swimmer
BlackJack

@finswimmer77: Du wirst wahrscheinlich beide Meinungen zu hören bekommen. Und natürlich die Nachfrage ob es denn wirklich so verschachtelt sein muss. :-)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

BlackJack hat geschrieben:@finswimmer77: Du wirst wahrscheinlich beide Meinungen zu hören bekommen.
Ich habe im Quellcode auf Arbeit ständig mit solchen alten Monster-Funktionen zu tun, die das gerne so handeln, dass ein Boolesches-Flag regelt, ob im Ablauf folgende Blöcke noch betreten werden müssen. Dies sollte wohl für bessere Lesbarkeit sorgen, indem es zu tiefe Verschachtelungen vermeidet... tut es aber nicht!
Insofern kann ich nur sagen: *Imho* zeigt ein ``return`` an der Stelle, an der klar ist, dass etwas zurück gegeben werden muss, für mehr Klarheit und ist lesbarer.

Aber...
BlackJack hat geschrieben: Und natürlich die Nachfrage ob es denn wirklich so verschachtelt sein muss. :-)
das ist imho das Hauptkriterium, welches dafür sorgt, dass beide Varianten grundsätzlich ok sind. Denn Funktionen sollten immer hübsch *kurz* und damit übersichtlich und lesbar sein. Wer Monster-Funktionen mit drei Einrückungsebenen und mehr und dazu noch mehr als 20 Zeilen schreibt, der kann sich weder durch das eine noch durch das andere mehr Lesbarkeit verschaffen! Da hilft nur, das ganze in kleinere Häppchen aufzuteilen! Und dann nehmen sich beide Varianten in Sachen Lesbarkeit kaum etwas :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
finswimmer77
User
Beiträge: 13
Registriert: Freitag 14. Dezember 2012, 22:07

Hallo,
jetzt komme ich mal dazu zu Antworten.

Ist mir schon klar, dass ich vermutlich Antworten in alle Richtungen bekommen könnte. Ich hatte gehofft, dass auch die ein oder andere Begründung dabei ist warum sich wer wie entscheidet und ich mich dann evtl. einer dieser Meinungen anschließen kann.

Aber wie Hyperion schon sagt, wird es bei meinem konkreten Code auch auf das weitere Aufsplitten der Funktion hinauslaufen.

Vielleicht kommen ja noch ein paar Wortmeldungen.

Vielen Dank jedenfalls euch beiden.

fin swimmer
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@finswimmer77
Ich denke, es wäre am sinnvollsten, wenn Du Deine "Monsterfunktion" einfach mal zeigst. Dann kann man ganz konkret über Verbesserungen reden. Und die müssen ja nicht unbedingt nur mit ``return`` zu tun haben.

Ich schreib' das, weil ich selbst darin Experte bin, mich mit "wie-macht-man-das-grundsätzlich?" Fragen aufzuhalten. :mrgreen: Schneller und effektiver gehts aber immer dann, wenn ich mit meinem Code 'rausrücke... :wink:

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten