Ich habe mich bemüht, auch hier einen vernünftigen Weg zu finden, also bin ich auf eine Idee gekommen (keine Silberkugel, da dies hauptsächlich Geschmackssache ist).
if bool(condition1 and
condition2 and
...
conditionN):
foo()
bar()
Ich finde ein paar Vorteile in dieser Lösung im Vergleich zu anderen, die ich gesehen habe, nämlich, dass Sie genau 4 zusätzliche Einrückungsräume (bool) erhalten, sodass alle Bedingungen vertikal ausgerichtet werden können und der Hauptteil der if-Anweisung eingerückt werden kann ein klarer (ish) Weg. Dies behält auch die Vorteile der Kurzschlussauswertung von Booleschen Operatoren bei, erhöht aber natürlich den Overhead eines Funktionsaufrufs, der im Grunde nichts bewirkt. Sie könnten (gültig) 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 letztendlich eine Frage des Geschmacks.
Komischerweise kam mir beim Schreiben und Nachdenken über das "Problem" eine weitere Idee, mit der der Aufwand für einen Funktionsaufruf entfällt. Warum nicht angeben, dass wir mit zusätzlichen Klammerpaaren in eine komplexe Bedingung eintreten werden? Sagen Sie 2 weitere, um einen schönen 2-Leerzeichen-Einzug der Unterbedingungen relativ zum Hauptteil der if-Anweisung zu erhalten. Beispiel:
if (((foo and
bar and
frob and
ninja_bear))):
do_stuff()
Ich mag das irgendwie, denn wenn du es dir ansiehst, läutet sofort eine Glocke in deinem Kopf und sagt: "Hey, hier ist eine komplexe Sache los!" . Ja, ich weiß, dass Klammern die Lesbarkeit nicht verbessern, aber diese Bedingungen sollten selten genug auftreten. Wenn sie angezeigt werden, müssen Sie sie trotzdem vorsichtig lesen (weil sie komplex sind ).
Wie auch immer, nur zwei weitere Vorschläge, die ich hier nicht gesehen habe. Hoffe das hilft jemandem :)
pep8
Kriterien des Pakets erfüllt. Inpep8
der Ausgabe Nr. 126 des Pakets geht es darum, das Paket so zu reparieren, dass es genau der PEP8-Spezifikation entspricht. Die Diskussion für das Problem enthält einige Stilvorschläge, die auch hier zu sehen sind.