Software sollte so programmiert werden, dass der Code auch von Dritten gut verstanden wird und sauber arbeitet. Dabei helfen die Clean Code Principles. Diese gehen allerdings auch mit Nachteilen einher.
Clean Code ist verständlich lässt sich recht einfach warten, geht aber mit Performance-Einbußen einher.
Jeder Entwickler weiß: Es gibt guten und schlechten Code. Allerdings gibt es zwei Formen von „schlechtem“ Code: Solcher, der einfach schlecht funktioniert – und solcher, der schlecht strukturiert und verworren ist, ohne dass er funktional problematisch wäre.
Gerade letzterer ist aber dann problematisch, wenn es darum geht, ein Software-Projekt zu übertragen – sei es im Rahmen agiler Entwicklung, oder weil das Entwickler-Team wechselt, umstrukturiert oder sich vergrößert. Es kann aber auch sein, dass die Software als Open-Source-Projekt veröffentlich werden soll. In all diesen Fällen ist es sinnvoll, dass der Code „sauber“, also möglichst umstandslos lesbar ist.
Seit geraumer Zeit existieren Ideale der Software-Entwicklung, die genau das einfordern: Prinzipien wie KISS, DRY oder YAGNI sind schon lange formuliert, um Entwickler dazu anzuhalten, Code möglichst sauber, von anderen Entwicklern nachvollziehbar und minimalistisch zu gestalten.
KISS („Keep it simple, stupid“)
Das KISS-Prinzip ist eines der ältesten Prinzipien der Software-Entwicklung und wurde schon in den 1960ern vom US-Militär etabliert. Dinge sollten einfach sein, das schließt neben Bedienung und dem Einsatzzweck im Falle von Software auch die Codebasis ein. Das bedeutet für Entwickler, dass sie ihren Code und die verwendete Programmiersprache jederzeit hinterfragen sollten. Gibt es einen einfacheren Weg, um das Problem zu lösen? Dann nimm ihn.
DRY („Don’t repeat yourself“)
Das DRY-Prinzip ist ebenfalls sinnvoll, um Code einfach zu halten: Es geht darum, dass Dinge nicht mehrfach „abgefrühstückt“ werden sollen. Wenn zum Beispiel ein Wert ausgelesen und später verwendet werden soll, ist es sinnvoller, eine Funktion zu entwickeln, die den Wert zwischenspeichert, statt ihn zweimal auszulesen. Der DRY-Code ist dabei ausgefeilter als der Nicht-optimierte „WET-Code“ („We enjoy typing“): Zwar mag die einzelne Funktion dadurch länger werden, am Ende des Tages bleibt es aber höchstwahrscheinlich bei deutlich weniger Code und damit Rechenzeit.
YAGNI („You Aren't Gonna Need It“)
Das YAGNI-Prinzip besagt, dass zunächst jeder zusätzliche Code überflüssig ist: Er sollte nur hinzugefügt werden, wenn es dafür einen berechtigten Grund gibt, etwa das Hinzufügen einer neuen Funktion. Dabei gibt es gewisse Überschneidungen mit KISS und DRY: Wenn sich eine Funktion innerhalb einer anderen lösen lässt, greift sowohl KISS, als auch DRY und YAGNI, denn es ist keine „überflüssige“ Code-Zeile notwendig. Code, der keinen spezifischen Zweck (mehr) hat, sollte dementsprechend entfernt (und nicht bloß auskommentiert) werden.
Alle drei Prinzipien sorgen bei Anwendung mehr oder weniger automatisch dafür, dass Code sauberer, also „cleaner“ wird. Allerdings muss das nicht zwingend der Fall sein, etwa wenn KISS, DRY und YAGNI angewandt werden, der Code aber dennoch ein chaotisches Konstrukt ist.
Hier kommen die Clean Code Principles ins Spiel, eine detailliert aufgeschlüsselte Liste zur Reinhaltung von Code, die Entwickler Robert C. Martin 2009 in seinem Buch „Clean Code“ festgehalten hat. Backend-Engineer Wojtek Lukaszuk hat die Essenz des Buches sehr detailliert auf GitHub zusammengestellt.
Ergänzungen zur traditionellen Clean-Code-Philosophie
Die Clean-Code-Principles von Martin sind gegenüber den „klassischen“ drei Prinzipien deutlich erweitert. Er schlüsselt die Regeln zudem für Design, Verständlichkeit, Funktionalität, Kommentierung und viele andere Bereiche auf. Das kann Entwicklern – egal ob Front- oder Backend – dabei helfen, ihren Code von Grund auf sauber und lesbar zu konzipieren.
Wichtige Best-Practices wie das Einhalten von Konventionen oder das Trennen von Multi-Threading-Code, der Hinweis, sich an eigene Regeln – Stichwort Konsistenz – zu halten und bei der Kommentierung nicht redundant zu werden, sind Infos, die die meisten Programmierer sicher bereits gehört haben oder anwenden. Allerdings fallen sie im Alltag dann doch auch oft unter den Tisch, sei es aus Zeitdruck, Nachlässigkeit oder aus ineffizienter Teamarbeit heraus.
Martins umfangreiche Liste von Clean-Code-Prinzipien lässt sich allerdings auf sechs sehr solide Basis-Regeln herunterbrechen:
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Sorge für klare Struktur bei und zwischen Funktion, Daten und Design.
Befolge Konventionen.
Trenne Funktionen.
Vermeide Wiederholungen.
Kommentiere so oft wie nötig und so wenig wie möglich.
Halte Code so klein und einfach wie möglich.
Kurzum: Der Code sollte keine unnötigen Schnörkel aufweisen und für Dritte gut nachvollziehbar bleiben. Auf diese Weise ist es für neu hinzukommende oder übernehmende Entwickler leicht, eine vorhandene Code-Basis zu verwenden, zu ergänzen oder zu optimieren, selbst wenn der ursprüngliche Entwickler längst an anderen Projekten arbeitet oder das Unternehmen verlassen hat. Sauberer Code garantiert, dass andere Entwickler möglichst reibungslos übernehmen können, was Reibungsverluste reduziert, Kosten spart – und am Ende natürlich auch für bessere Software-Qualität sorgt.
Gerade langfristige oder lange in Betrieb bleibende Software-Projekte – etwa Software für Industrie und Produktion – , aber auch aufwändige, von mehreren Entwicklern oder sogar Teams gepflegte Software wie etwa die großen Open-Source-Projekte profitieren daher in der Regel von der Einhaltung der Clean-Code-Princples, egal ob klassisch oder nach Robert C. Martin.
Clean Code ist nicht immer der beste Code
Bei strenger Einhaltung der Clean-Code-Prinzipien gibt es allerdings ein Problem: Der sauberste Code ist nicht immer der beste, wie Spieleentwickler Casey Muratori in einem interessanten Youtube-Video nachgewiesen hat. Hier testete er „Clean Code“ gegen die nicht ganz so saubere Variante, nämlich polymorphen Code gegenüber konditionellen Funktionen vorzuziehen.
Trotz der saubereren Code-Struktur kam es hier mit der „klassischen“ Methode zu einer rund 50 Prozent besseren Leistung – auch weil die für den Polymorphismus benötigten Extras nicht eingebunden werden müssen. Casey Muratori: „Da werden drei oder vier Jahre Hardware-Evolution ausgelöscht, weil jemand gesagt hat, Polymorphismus wäre Switch-Statements vorzuzuziehen.“
Natürlich hängt es stark mit der Anwendung des Codes zusammen, ob dieser Einbruch tatsächlich in diesem Ausmaß stattfindet. Und natürlich sind auch „Mischformen“, die nur teilweise die Clean-Code-Prinzipien umsetzen, denkbar. Am Ende des Tages gilt es für Entwickler, ein funktionierendes Mittelmaß aus sauberem Code und effizienter Hardware-Nutzung zu finden.