Mach doch mal die If's schöner!
Die Anordnung von If-Anweisungen kann die Nachvollziehbarkeit verbessern.
Ausgangslage
Mit einem einfachen Trick können wir unsere If-Bedingungen reformulieren, um so immer zunehmenden Einrück-Exzesse zu vermeiden und um die Leserlichkeit zu verbesser.
Betrachten wir das folgende Beispiel, in dem wir einen Knoten in einen Suchbaum hinzufügen wollen, wenn:
- die Lower-Bound des Knotens kleiner ist als unsere Upper-Bound
- der Knoten nicht in einem HashSet mit gespeicherten Zwischenlösungen enthalten ist
- der Knoten nicht durch ein Dominanzkriterium herausgefiltert wird
def add_node_to_tree(self, node, tree):
if node.lowerbounde < self.upperbound:
if node not in self.zwischenloesungen:
if dominated(node) == False:
tree.append(node)
Der Code rückt bereits bei drei zu prüfenden Statements sichtbar ein. Nachfolgend wird daher eine Alternative dargestellt.
def add_node_to_tree(self, node, tree):
if node.lowerbounde >= self.upperbound:
return
if node in self.zwischenloesungen:
return
if dominated(node):
return
tree.append(node)
Hier werden alle relevanten Bedingungen bekömmlich untereinander aufgelistet und können von Fremden (oder dem Zukunfts-Ich) Zeile für Zeile nachvollzogen werden. Sollten sich im Laufe der Zeit weitere Prüfungen ergeben, können diese elegant in die Funktion eingefügt werden.