Programmieren

Mach doch mal die If's schöner!

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 verbessern.

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. Es könnten noch weitere Bedingungen hinzu kommen, die die Leserlichtkeit weiter verschlechtern.

Mit ein wenig Nachdenken, gelingt es aber den Code leserlich umzustellen:

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.