Ich habe mich auch schwer getan, eine vernünftige Lösung dafür zu finden, also habe ich mir etwas einfallen lassen (kein Patentrezept, denn das ist vor allem eine Frage des Geschmacks).
if bool(condition1 and
condition2 and
...
conditionN):
foo()
bar()
Ich finde, dass diese Lösung im Vergleich zu anderen, die ich gesehen habe, einige Vorteile hat, nämlich genau 4 Leerzeichen mehr an Einrückung (bool), so dass alle Bedingungen vertikal aufgereiht werden können, und der Hauptteil der if-Anweisung kann auf eine klare Art und Weise eingerückt werden. Damit bleiben auch die Vorteile der Kurzschlussauswertung von booleschen Operatoren erhalten, aber natürlich kommt der Overhead eines Funktionsaufrufs hinzu, der im Grunde nichts tut. Man könnte (berechtigterweise) argumentieren, dass jede Funktion, die ihr Argument zurückgibt, hier anstelle von bool verwendet werden könnte, aber wie gesagt, es ist nur eine Idee, und es ist letztlich eine Frage des Geschmacks.
Als ich dies schrieb und über das "Problem" nachdachte, kam mir lustigerweise Folgendes in den Sinn noch eine Idee, die den Overhead eines Funktionsaufrufs beseitigt. Warum sollte man nicht durch zusätzliche Klammerpaare anzeigen, dass man im Begriff ist, eine komplexe Bedingung einzugeben? Sagen wir, 2 mehr, um einen schönen 2-Leerzeichen-Einzug der Unterbedingungen relativ zum Körper der if-Anweisung zu erhalten. Beispiel:
if (((foo and
bar and
frob and
ninja_bear))):
do_stuff()
Das gefällt mir irgendwie, denn wenn man sich das ansieht, klingelt es sofort im Kopf. "Hey, das ist eine komplexe Sache, die hier vor sich geht!" . Ja, ich weiß, dass Klammern der Lesbarkeit nicht förderlich sind, aber diese Bedingungen sollten selten genug auftauchen, und wenn sie auftauchen, müssen Sie sowieso innehalten und sie sorgfältig lesen (denn sie sind komplex ).
Wie auch immer, nur zwei weitere Vorschläge, die ich hier noch nicht gesehen habe. Hoffentlich hilft das jemandem :)
2 Stimmen
Wenn Ihr Editor die Funktion Pep8 Python-Paket, um zu erkennen, wann eine Warnung über PEP8 Verstöße, müssen Sie entweder den E125-Fehler deaktivieren oder eine Formatierungslösung finden, die den Anforderungen der
pep8
Kriterien des Pakets. Die Websitepep8
des Pakets Ausgabe #126 geht es darum, das Paket strikt an die PEP8-Spezifikation anzupassen. Die Diskussion zu diesem Thema enthält einige Stilvorschläge, die auch hier zu sehen sind.1 Stimmen
Beachten Sie, dass pep8 für das erste Beispiel "E129 visuell eingerückte Zeile mit gleichem Einzug wie die nächste logische Zeile" ausgibt.
0 Stimmen
Diese Frage ist sehr alt und es gibt eine Menge Meinungen, aber sie ist eindeutig meinungsbasiert. Die Formulierungen "ist nicht sehr ansprechend" und "ist nicht sehr hübsch" legen die Kriterien dafür fest, dass die vermeintlich richtige Antwort diejenige ist, die am besten mit den ästhetischen Vorlieben des Fragestellers übereinstimmt (d. h. eine Meinung). Ich könnte genau dieselbe Frage stellen und behaupten, dass es sich nicht um ein Duplikat handelt, weil mein ästhetischer Geschmack sie als anders qualifiziert und zu einer anderen "richtigen" Antwort führen wird.
2 Stimmen
@Z4-tier: Ja, es ist eine Meinungsäußerung. Aber sie wurde vor 12 Jahren gestellt. SO war eine andere, kinder Ort zu dieser Zeit. In letzter Zeit häufen sich die Ablehnungen, da sich die Standards von SO geändert haben. Dennoch hoffe ich, dass er mit über 1 Mio. Aufrufen mehr Gutes als Schlechtes in der Welt bewirkt. Ich kann mir gut vorstellen, dass Leute, die sich heute die gleiche Frage stellen, sie googeln, auf diese Diskussion stoßen und sie als nützlich empfinden, um ihr Denken zu kalibrieren. Es gibt mehrere hochgradig stimmige Antworten, aus denen man wählen kann.
2 Stimmen
@EliBendersky völlig einverstanden. Es ist, als hätte SO eine ständige Identitätskrise: Obwohl es eindeutig nicht "den Regeln" entspricht (die Anzahl der gültigen Antworten ist ein Beweis dafür), ist es ebenso klar, dass es einen Mehrwert bietet. Alles in allem würde ich lieber mit jemandem zusammenarbeiten, der artikulierbare und begründete Ansichten über den Codierungsstil entwickelt hat, selbst wenn sich seine Ansichten von meinen unterscheiden.