Web & Entwicklung

Clean Code

Clean Code bezeichnet Programmcode, der so geschrieben ist, dass ihn ein anderer Entwickler ohne Erklärung versteht: sprechende Namen, kleine Einheiten, wenige Verzweigungen. Der Maßstab ist Lesbarkeit, nicht Kürze.

Redaktionell geprüft von Alexander SeidlertwentyonepixelsStand:

Warum das Ihr Geld betrifft

Weil der Großteil der Kosten einer Software nach der ersten Auslieferung entsteht. Jede Erweiterung beginnt damit, dass jemand versteht, was da steht. Unverständlicher Code verlängert diesen Schritt bei jeder einzelnen Änderung.

Der praktische Test: Kann ein anderer Dienstleister Ihr Projekt übernehmen, ohne es neu zu bauen? Wenn nicht, zahlen Sie den Preis später — und dann auf einmal.

Woran ein Auftraggeber Qualität erkennen kann

An drei Dingen, ohne selbst lesen zu können: Gibt es Tests, laufen sie automatisch, und wie lange braucht ein neuer Entwickler bis zur ersten Änderung? Die dritte Frage ist die aussagekräftigste und lässt sich beim Wechsel beantworten.

Ein viertes Zeichen ist unauffällig und verlässlich: Wie oft kommt die Antwort „das ist historisch gewachsen"? Sie ist die höfliche Form von „das versteht niemand mehr".

Warum Kommentare kein Ersatz für Klarheit sind

Weil sie veralten und der Code nicht. Ein Kommentar, der das Falsche behauptet, ist schlechter als keiner — er wird geglaubt. Deshalb erklären gute Kommentare das Warum, nicht das Was: die Entscheidung, den Sonderfall, die Begründung für einen ungewöhnlichen Weg.

Das Was gehört in verständliche Namen. Eine Funktion, deren Zweck man aus dem Namen abliest, braucht keinen Kommentar — und altert nicht.

Was es nicht heißt

Nicht möglichst viele Muster und Abstraktionsebenen. Eine Schnittstelle mit genau einer Umsetzung macht Code nicht sauberer, sondern nur größer. Die einfachste Lösung, die verständlich bleibt, gewinnt.

Und es heißt nicht kommentarfrei. Ein Kommentar, der erklärt, WARUM etwas so gelöst ist, ist wertvoll. Einer, der wiederholt, was die nächste Zeile ohnehin sagt, ist Ballast.

Rechtsgrundlagen

  • Bürgerliches Gesetzbuch (BGB)(öffnet in neuem Tab)Anfechtung §§ 119–122, Bindung an den Antrag § 145, AGB-Recht §§ 305–310, Annahmeverzug § 615 (Ausfallgebühr), Werkvertrag §§ 631 ff., Widerruf §§ 355 ff., Zahlungsdienste §§ 675e Abs. 4, 675u, 675v

Häufige Fragen zu Clean Code

Nein. Clean Code beschreibt, wie verständlich Programmcode ist, nicht ob er das Richtige berechnet. Die belastbarste dazu veröffentlichte Messung stammt von W. Ward, Hewlett-Packard Journal, April 1989: zwei Firmware-Projekte, eine Korrelation von 0,8 zwischen zyklomatischer Komplexität und Fehlerdichte, wiedergegeben in NIST Special Publication 500-235. Eine Korrelation auf zwei Projekten belegt, dass verzweigter Code häufiger Fehler enthält – nicht, dass lesbarer Code keine enthält. Ein sprechend benannter Rechenweg kann durchgehend die falsche Formel verwenden.

Clean Code schreibt keine nachrechenbare Zeilenzahl vor. Die einzige Obergrenze mit belegbarer Fundstelle steht in NIST Special Publication 500-235, Abschnitt 3.1: 60 Zeilen als verbreitete Grenze, begründet damit, dass ein Modul auf eine gedruckte Seite passen solle. Dieselbe Stelle nennt die Begründung veraltet und hält fest, dass zwischen Zeilenzahl und Verzweigungsgrad kein gleichbleibender Zusammenhang besteht. Messbar ist deshalb die zyklomatische Komplexität, für die Abschnitt 2.5 die Obergrenze 10 nennt – nicht die Länge.

Nur über messbare Merkmale. Beim Werkvertrag macht § 633 Absatz 2 BGB die vereinbarte Beschaffenheit zum Maßstab für Sachmängel; fehlt eine Vereinbarung, zählt die bei Werken gleicher Art übliche Beschaffenheit. Sauberer Code benennt keine prüfbare Beschaffenheit und fällt damit auf diesen zweiten, schwächeren Maßstab zurück. Vereinbaren lässt sich, was ein Werkzeug nachweist: eine benannte Fassung der Formatierregeln, eine Obergrenze für die Verzweigungstiefe je Modul, eine Mindestabdeckung der Tests. Was niemand messen kann, lässt sich später nicht einfordern.

Clean Code betrifft die einzelne Datei, Clean Architecture die Richtung der Abhängigkeiten zwischen den Schichten. Robert C. Martin veröffentlichte dazu am 13. August 2012 die Dependency Rule: Quellcode-Abhängigkeiten dürfen ausschließlich nach innen zeigen, und nichts in einem inneren Kreis darf etwas über einen äußeren wissen. Daraus folgt eine Grenze: Sprechende Namen in jeder Datei ändern nichts daran, wenn die Geschäftslogik das Datenbankpaket importiert. Beide Ebenen sind getrennt prüfbar und getrennt verletzbar.

Mehr zum Thema

9 Min. Lesezeit

SonicWall SMA1000: Sicherheitslücke mit CVSS 10 schließen

SonicWall hat vier Lücken in der SMA1000-Reihe geschlossen, darunter eine SSRF ohne Anmeldung mit der Höchstwertung 10,0. Welche Firmware hilft, warum es keinen Workaround gibt und warum diese Gerätereihe in diesem Jahr schon zweimal angegriffen wurde.

9 Min. Lesezeit

WhatsApp-Kopplungscode-Betrug: was Firmen jetzt tun sollten

Eine harmlose Bitte um eine Stimme, ein achtstelliger Code – und ein fremdes Gerät liest jeden Chat mit. Wie die Masche funktioniert, woran Sie ein gekapertes Konto erkennen und was ein Betrieb mit Diensthandys und WhatsApp Business jetzt regeln sollte.

Alle Fachbeiträge ansehen

Passende Leistungen

Technische Beratung & Architektur

Architektur-Reviews, Technologieauswahl und technische Roadmaps — unabhängige Beratung für Ihre digitale Strategie.

Mehr dazu

Sicherheitsaudit & Code Review

Sicherheitsanalyse nach OWASP Top 10: Penetration Testing, Code Review und Behebung von Schwachstellen.

Mehr dazu