code garden Code Garden (Beta)
Zurück zum Blog

Clean Code Principles: 7 Regeln, die dich vom Amateur zum Pro machen

2026-02-14 Best Practices

Code zu schreiben, der funktioniert, ist der erste Schritt. Code zu schreiben, den andere lesen, warten und erweitern koennen, ist das, was Profis von Hobbyisten unterscheidet.

Es gibt einen Moment in jeder Entwickler-Laufbahn, in dem der Code funktioniert, aber niemand, dich eingeschlossen, ihn zwei Wochen spaeter versteht. Das ist der Moment, in dem Clean Code aufhoert, ein Nice-to-have zu sein, und zur Notwendigkeit wird.

Clean Code geht nicht um Aesthetik. Es geht um Kommunikation. Code wird viel oefter gelesen als geschrieben, und das primaere Publikum ist nicht der Computer. Es ist der Mensch, der ihn als Naechstes aendern muss.

Regel 1: Benenne Dinge wie fuer Fremde

Variablennamen wie `x`, `temp` und `data` sagen dem Leser nichts. Vergleiche selbst:

python

# Schlecht
x = get_d()
t = x * 0.19
r = x + t

# Gut
netto_betrag = berechne_warenwert()
mehrwertsteuer = netto_betrag * 0.19
brutto_betrag = netto_betrag + mehrwertsteuer

Die Kosten eines langen Namens sind ein paar Tastendruecke. Die Kosten eines kryptischen Namens sind Minuten der Verwirrung, multipliziert mit jeder Person, die ihn liest.

Regel 2: Halte Funktionen klein und fokussiert

Eine Funktion sollte eine Sache tun und diese gut machen. Wenn du das Wort *und* brauchst, um zu beschreiben, was sie tut, tut sie zu viel:

python

# Schlecht – tut zwei Dinge
def verarbeite_bestellung(bestellung):
    # Validierung
    if not bestellung.get("produkt"):
        raise ValueError("Produkt fehlt")
    if bestellung["menge"] < 1:
        raise ValueError("Ungueltige Menge")
    # Speichern
    db.execute("INSERT INTO bestellungen ...")
    email_senden(bestellung["kunde"])

# Gut – getrennte Zustaendigkeiten
def validiere_bestellung(bestellung):
    if not bestellung.get("produkt"):
        raise ValueError("Produkt fehlt")
    if bestellung["menge"] < 1:
        raise ValueError("Ungueltige Menge")

def speichere_bestellung(bestellung):
    db.execute("INSERT INTO bestellungen ...")
    email_senden(bestellung["kunde"])

Regel 3: Vermeide tiefe Verschachtelung

Nutze Early Returns, um Verschachtelung zu eliminieren:

python

# Schlecht – tief verschachtelt
def user_zugriff(user, ressource):
    if user:
        if user.ist_aktiv:
            if user.hat_berechtigung(ressource):
                return ressource.daten
            else:
                raise PermissionError()
        else:
            raise ValueError("User inaktiv")
    else:
        raise ValueError("Kein User")

# Gut – flach mit Early Returns
def user_zugriff(user, ressource):
    if not user:
        raise ValueError("Kein User")
    if not user.ist_aktiv:
        raise ValueError("User inaktiv")
    if not user.hat_berechtigung(ressource):
        raise PermissionError()
    return ressource.daten

Regel 4: DRY, aber nicht ueber-abstrahieren

Wenn du dieselben fuenf Zeilen dreimal kopierst, extrahiere eine Funktion. Aber wenn zwei Code-Stuecke heute aehnlich aussehen, aber unterschiedlichen Zwecken dienen, wird das Erzwingen einer gemeinsamen Abstraktion spaeter Schmerzen verursachen, wenn sie sich unterschiedlich entwickeln muessen.

Regel 5: Behandle Fehler explizit

Exceptions mit einem leeren `catch`-Block zu schlucken ist einer der schnellsten Wege, Bugs zu erzeugen, die fast unmoeglich zu diagnostizieren sind:

python

# Schlecht – Fehler verschluckt
try:
    ergebnis = api_aufruf()
except Exception:
    pass  # Was ist passiert? Niemand weiss es.

# Gut – explizite Behandlung
try:
    ergebnis = api_aufruf()
except ConnectionError:
    logger.warning("API nicht erreichbar, nutze Cache")
    ergebnis = lade_aus_cache()
except ValueError as e:
    logger.error(f"Ungueltige API-Antwort: {e}")
    raise

Regel 6: Code erklaert sich selbst, Kommentare erklaeren das Warum

python

# Schlecht – offensichtlich
counter += 1  # Zaehler erhoehen

# Gut – erklaert eine nicht-offensichtliche Geschaeftsregel
# Bestellungen unter 10 EUR werden gebuendelt,
# weil die Versandkosten sonst den Warenwert uebersteigen
if bestellung.wert < 10:
    buendelung_vormerken(bestellung)

Regel 7: Refactore kontinuierlich, nicht in grossen Rewrites

Clean Code wird nicht in einer heroischen Session erreicht. Er entsteht aus kleinen Verbesserungen. Jedes Mal, wenn du eine Datei anfasst, hinterlasse sie etwas besser. Benenne eine verwirrende Variable um. Extrahiere eine Hilfsfunktion. Entferne toten Code.