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
Style Guideline Rückgabewerte von Funktionen
@finswimmer77: Du wirst wahrscheinlich beide Meinungen zu hören bekommen. Und natürlich die Nachfrage ob es denn wirklich so verschachtelt sein muss.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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!BlackJack hat geschrieben:@finswimmer77: Du wirst wahrscheinlich beide Meinungen zu hören bekommen.
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...
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 etwasBlackJack hat geschrieben: Und natürlich die Nachfrage ob es denn wirklich so verschachtelt sein muss.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-
- 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
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
@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. Schneller und effektiver gehts aber immer dann, wenn ich mit meinem Code 'rausrücke...
mutetella
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. Schneller und effektiver gehts aber immer dann, wenn ich mit meinem Code 'rausrücke...
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )