Prinzipien für sauberen Code
Was zeichnet "Clean Code" aus?
Mehr als nur funktionierender Code
Du hast bereits gelernt, wie du Programme schreibst, die syntaktisch korrekt sind und das gewünschte Ergebnis liefern. Clean Code (sauberer Code) geht einen entscheidenden Schritt weiter: Es geht nicht nur darum, dass der Code für den Computer ausführbar ist, sondern dass er für Menschen verständlich ist. In der professionellen Softwareentwicklung wird Code viel häufiger gelesen als geschrieben. Wenn du oder deine Teammitglieder den Code in sechs Monaten wieder ansehen, solltet ihr sofort verstehen, was er tut, ohne ihn mühsam entschlüsseln zu müssen. Sauberer Code ist gut lesbar, leicht zu warten und einfach zu erweitern. Dies spart langfristig Zeit und Kosten, reduziert Fehler (Bugs) und erleichtert die Einarbeitung neuer Teammitglieder.
KISS: Keep It Simple, Stupid
Das KISS-Prinzip ist eine Aufforderung, Lösungen so einfach und verständlich wie möglich zu halten. Komplexität ist der größte Feind der Sicherheit und Wartbarkeit. Oft neigen Entwickelnde dazu, "clevere" oder technisch beeindruckende Einzeiler zu schreiben, die jedoch schwer nachzuvollziehen sind.
- Komplex (Bad Practice): Verschachtelte Bedingungen und unklare Berechnungen in einer einzigen Zeile.
- Simple (Clean Code): Aufteilung in klare Schritte, sprechende Variablennamen und verständliche Anweisungen.
Beispiel: Du möchtest prüfen, ob ein:e Kund:in rabattberechtigt ist. Kompliziert und schwer lesbar:
if (u.age > 60 or (u.status == 2 and u.points > 100)) and not u.blocked:
give_discount()Einfach und verständlich (KISS): Hier werden die Bedingungen in sprechende Variablen (Booleans) ausgelagert. Der Code liest sich fast wie ein englischer Satz.
is_senior = user.age > 60
is_loyal_customer = user.status == 2 and user.points > 100
is_active = not user.blocked
if is_active and (is_senior or is_loyal_customer):
give_discount()DRY: Don't Repeat Yourself
Das DRY-Prinzip ("Wiederhole dich nicht") besagt, dass Wissen oder Logik in einem System nur an einer einzigen Stelle existieren sollte. Wenn du denselben Code-Block an mehreren Stellen kopierst und einfügst (Copy & Paste), schaffst du Redundanz.
- Das Risiko: Wenn sich die Logik ändert (z. B. der Umsatzsteuersatz sinkt von 19% auf 7%), musst du daran denken, alle kopierten Stellen zu ändern. Vergisst du eine Stelle, entstehen Inkonsistenzen und Fehler.
- Die Lösung: Nutze Funktionen, um wiederkehrende Logik zu kapseln und zentral zu verwalten.
Beispiel: Redundant (Verstoß gegen DRY): Die Steuerberechnung erfolgt an zwei Stellen identisch.
def calculate_total(price):
tax = price * 0.19 # Logik hier
return price + tax
def calculate_special_offer(price):
discounted = price - 10
tax = discounted * 0.19 # Logik wiederholt
return discounted + taxModular (Clean Code):
Die Steuerberechnung wird in eine eigene Funktion ausgelagert. Ändert sich der Steuersatz, muss nur die Funktion calculate_tax angepasst werden.
def calculate_tax(amount):
return amount * 0.19 # Zentrale Logik
def calculate_total(price):
return price + calculate_tax(price)
def calculate_special_offer(price):
discounted = price - 10
return discounted + calculate_tax(discounted)Wie setze ich Kommentare richtig ein?
Code erklärt das "Was", Kommentare das "Warum"
Ein weit verbreiteter Irrtum ist, dass guter Code viele Kommentare benötigt. Nach den Clean-Code-Prinzipien sollte der Code selbst so ausdrucksstark sein (durch gute Benamung von Variablen und Funktionen), dass er keine Erklärung benötigt, was er tut. Kommentare sind jedoch essenziell, um zu erklären, warum eine bestimmte Entscheidung getroffen wurde oder um auf Besonderheiten hinzuweisen, die nicht offensichtlich sind.
Überflüssiger Kommentar: Erklärt das Offensichtliche und bläht den Code auf.
# Erhöhe i um 1
i = i + 1 Sinnvoller Kommentar: Erklärt den geschäftlichen oder technischen Hintergrund (das "Warum").
# Wir warten 2 Sekunden, da die externe API eine Ratenbegrenzung hat
time.sleep(2)Die Gefahr veralteter Kommentare
Kommentare haben einen entscheidenden technischen Nachteil: Sie werden vom Computer (Compiler/Interpreter) ignoriert und nicht auf Korrektheit geprüft. Wenn du den Code änderst, aber vergisst, den Kommentar anzupassen, entsteht ein irreführender Kommentar. Ein falscher Kommentar ist schlimmer als gar kein Kommentar, da er Lesende auf eine falsche Fährte lockt und Vertrauen zerstört.
Beispiel für einen irreführenden Kommentar:
# Prüft, ob die Person eine administrative Rolle besitzt
if user.role == "guest":
return FalseBest Practice: Versuche immer zuerst, den Code so umzuschreiben, dass er selbsterklärend ist. Anstatt einen komplexen Ausdruck zu kommentieren, lagere ihn in eine gut benannte Funktion aus oder nutze Konstanten. Nur wenn der Code allein den Kontext nicht liefern kann, solltest du einen Kommentar schreiben.
Kommentare
Kommentare sollten sparsam und gezielt eingesetzt werden. Sie sollten erklären, warum etwas gemacht wird, nicht was gemacht wird. Der Code selbst sollte selbsterklärend sein. Ein Beispiel: Anstatt einen Kommentar zu schreiben, der erklärt, dass eine Variable den Durchschnitt berechnet, sollte die Variable so benannt werden, dass ihre Funktion klar ist, z.B. averageValue. Kommentare sind besonders nützlich, um komplexe Algorithmen oder Entscheidungen zu erklären, die nicht sofort offensichtlich sind. Sie sollten jedoch vermieden werden, wenn der Code selbst bereits klar ist, da Kommentare veralten können und dann mehr schaden als nützen.
Lernziele
- den Einsatz von Kommentaren interpretieren, indem analysiert wird, wann Kommentare notwendig sind (z.B. zur Erklärung von "Warum"-Entscheidungen) und wann sie durch selbsterklärenden Code ersetzt werden sollten, um veraltete oder irreführende Kommentare zu vermeiden.
- das Konzept von Clean Code erklären, indem die Bedeutung von lesbarem, verständlichem und wartbarem Code für die langfristige Produktivität und Qualität in Softwareprojekten dargelegt wird.
- das DRY-Prinzip (Don't Repeat Yourself) veranschaulichen, indem der Kontrast zwischen redundantem Code und modularisierten Abstraktionen aufgezeigt und die daraus resultierende Reduktion von Fehlerquellen erläutert wird.
- das KISS-Prinzip (Keep It Simple, Stupid) veranschaulichen, indem Beispiele für unnötige Komplexität identifiziert und durch Darstellung einfacherer, direkter Lösungswege gegenübergestellt werden.
Vertiefe dein Wissen!
Du hast die Grundlagen verstanden? Perfekt! In unserer App findest du interaktive Übungen, praktische Projekte und erweiterte Inhalte zu Prinzipien für sauberen Code.
Ab 5€/Monat • Kostenloser Test verfügbar