Zum Inhalt gehen

Clean Code in Theorie und Praxis

Capgemini Karriere
31. Mai 2024

Bugs im Code zu finden, kann für Softwareentwickler*innen mühsam sein, muss es aber nicht: Clean Code kann im Software Engineering viel bewirken. Was genau, erfährst du hier.

Intuitiv, leicht verständlich, gut lesbar: So lässt sich Clean Code kurz und knapp beschreiben. Genau das ist auch das Ziel: Klassen, Funktionen und Co. so einfach wie möglich zu gestalten – ohne Redundanzen oder zusätzliche Features. Doch wie gelingt das und worauf ist zu achten?

Wir haben mit Capgemini-Experte Jan Bronstering, Lead Software Engineer am Standort in Frankfurt am Main, über die Philosophie des ‚sauberen’ Codes gesprochen und spannende Einblicke sowie praktische Tipps erhalten. Daraus entstanden ist ein kleiner Ratgeber, der dir den Start in die IT-Karriere erleichtern oder den Weg „zurück zu den Anfängen“ ebnen kann. Ein gutes Stichwort, denn um in Clean Code einzutauchen, lohnt ein kurzer Blick in die Vergangenheit.

Eine kleine Geschichte des Clean Code

Der Begriff „Clean Code“ wurde ursprünglich vom US-amerikanischen Softwareentwickler Robert C. Martin geprägt. 2008 veröffentlichte der Autor sein Buch Clean Code: A Handbook of Agile Software Craftsmanship, das – samt anschließendem Diskurs – für viele eine Programmierkultur begründete. Martin hat darin gemeinsam mit einigen Kollaboratoren die grundlegenden Theorien und Praktiken zur Schaffung von transparentem Code zusammengestellt. Auf GitHub findest du übrigens die (englische) Zusammenfassung des Buches und ein Cheat Sheet.

„Das Buch beinhaltet mehrere Richtlinien, die in der Summe zu einem sauberen Code führen sollen, der leicht zu verstehen, zu warten und zu ändern bzw. zu erweitern ist. Clean-Code-Kultur ist aber mehr als das Buch: Es geht auch darum, verschiedene Programmierpraktiken zu reflektieren und diskutieren – und Regeln auch mal zu hinterfragen“, fasst Capgemini Lead Software Engineer Jan Bronstering zusammen.

Die Gründe hinter der Idee von Clean Code sind vor allem wirtschaftlicher Natur: Unternehmen müssen jedes Jahr Ressourcen aufwenden, um sich bei der Wartung oder zur Fehlerbehebung in „schlechtem Code“ zurechtzufinden. Wenn Code unter Zeitdruck erstellt und nicht aufgeräumt wird, wächst die Codebasis und auch das Produkt wird zunehmend komplex. Änderungen werden immer schwieriger und die Wahrscheinlichkeit für Programmierfehler steigt. Clean Code hilft, diese Komplexität zu reduzieren und Code leserfreundlicher zu machen.

Code, Infrastruktur und Cloud sind deine Leidenschaft? Erfahre mehr über die Rolle als DevOps Engineer (w/m/d) und bewirb dich jetzt!

Welche Vorteile hat Clean Code?

Einer der Hauptvorteile von Clean Code ist also seine Lesbarkeit. Er ist so simpel geschrieben, dass sich selbst weniger erfahrene Programmierer*innen oder neue Teammitglieder darin zurechtfinden, die mit der Codebasis noch nicht vertraut sind.

Darüber hinaus bietet Clean Code noch weitere Vorteile:

  • Bessere Wartbarkeit:
    Softwareentwicklung ist nur die eine Seite der Medaille – Code muss auch gewartet werden. Wenn eine Applikation mithilfe der Clean Code Principles geschrieben wurde, lässt sie sich einfacher prüfen und aktualisieren.
  • Höhere Qualität:
    Schlecht lesbarer Code muss nicht zwangsläufig Fehler enthalten. Doch mit steigender Komplexität werden auch Bugs wahrscheinlicher – und diese lassen sich mit jeder Erweiterung der Codebasis immer schwerer identifizieren. In gut strukturiertem Clean Code können sich Fehler nicht so leicht einschleichen oder verstecken.
  • Mehr Produktivität:
    Clean Code ist modular organisiert und jedes Modul präzise vom anderen abgegrenzt. So können Developer*innen bei der Wartung, Erweiterung und Fehlersuche schneller ans Ziel gelangen und sich besser auf ihre eigentliche Arbeit konzentrieren.
  • Verbesserte Kommunikation:
    Die Beschäftigung mit Clean Code kann auch die Kommunikation im Team verbessern. Egal ob Teammitglied oder Projektleitung: Wer klar und präzise formulieren kann, hilft, die Performance und schlussendlich auch die Kundenzufriedenheit zu steigern. Denn um etwas wirklich verständlich zu machen, muss man sich in sein Gegenüber hineinversetzen können und darf nicht davon ausgehen, dass die eigenen Gedankengänge nachvollziehbar sind. Das gilt vor allem bei hybriden Arbeitsmodellen, wo Teams ortsübergreifend und überwiegend digital kommunizieren.

Auch Clean Code hat seine Grenzen

‚Sauberer‘ Code erfordert Zeit, sollte aber nicht die Agilität gefährden: Einem bestimmten Regelwerk starr zu folgen, kann sogar das Gegenteil bewirken und die Programmierarbeit komplizierter machen als nötig.

Und was ist mit dem häufig genannten Argument, Clean Code sei nicht so performant? „Trade-Offs zwischen sauberem und performantem Code sind nicht unüblich“, erklärt Jan. „Aber um effektiv arbeiten zu können, brauchen wir eine menschennahe, klare Sprache und Abstraktionen, wie Clean Code sie bietet. Sollten sich dadurch Schwachstellen in der Applikation ergeben, kann man identifizieren, wo sich eine Optimierung wirklich lohnt – auch wenn es auf Kosten der Klarheit geht. Dann sind aber erläuternde Kommentare empfehlenswert.“

Möglichkeiten, Herausforderungen zu begegnen, gibt es viele. Zum Beispiel eine gute Projektplanung, die Festlegung eines gemeinsamen Regelwerks, aber auch Flexibilität und eine offene Kommunikationskultur. Lies dazu auch die folgenden Tipps!

7 Tipps, um Clean Code anzuwenden

Es gibt zahlreiche Leitlinien für Clean Code – doch welche davon sind wirklich hilfreich? In den folgenden Tipps gibt Jan einen ersten Überblick für alle, die in das Thema einsteigen oder ihr Wissen vertiefen möchten.

Tipp 1: Clean Code Principles verinnerlichen

Es gibt mehrere Grundregeln, eine davon lautet: Keep it simple, stupid, kurz: KISS. Ein weiteres Prinzip, das Jan gerne anwendet, nennt sich YAGNI: You ain’t gonna need it. Beide Merksätze erinnern daran, immer die einfachste Lösung zu implementieren.

Diese – und weitere – Merkregeln helfen dabei, Code einfach zu halten und sich aufs Wesentliche zu konzentrieren. Denn das ‚Problem’ ist häufig auch nicht der Code selbst, sondern wie er angewendet wird, erklärt Jan: „Programmierer*innen neigen dazu, teilweise Features einzubauen, die überhaupt nicht gefragt sind. Merksätze wie KISS oder das YAGNI-Prinzip helfen, sich wirklich an die Anforderungen zu halten und kein Over-Engineering zu betreiben.“

Weniger ist also mehr, und zwar nicht nur bei der Erstellung, sondern auch bei der Wartung und Erweiterung von Code. Ein weiterer Leitsatz ist daher die Boy Scout Rule: Lass den Code in besserem Zustand zurück, als du ihn vorgefunden hast. Mehr dazu erfährst du in unserem Blogpost über Coding Guidelines. Auch die fünf SOLID Principles aus Robert C. Martins Agile Software Development, Principles, Patterns, and Practices“ sind eine gute Basis.

Tipp 2: Alle auf eine Linie bringen

Teamarbeit lebt von Diversität, denn jedes Mitglied bringt ganz eigene Erfahrungen, Ideen und Herangehensweisen ein. Doch in einem Projekt ist es manchmal vorteilhaft, wenn sich das Team auf Clean Code Principles einigt.

Deshalb empfiehlt Jan, sich als Team schon vorab mit bestimmten Regelwerken auseinanderzusetzen und gemeinsame Richtlinien festzulegen: „Natürlich gibt es unterschiedliche Meinungen, manche Regeln gefallen den einen besser als den anderen. Da muss demokratisch entschieden werden, damit es ein teamübergreifendes Regelwerk geben kann und der Code später wirklich aus einem Guss ist.“

Tipp 3: Auf gesammeltes Wissen der Community zurückgreifen

Ob allein oder im Team: Es gibt zahlreiche Angebote, um sich weiterzubilden. Erfahrene Clean Code Developer*innen teilen Best Practices beispielsweise in GitHub Repositories oder OpenSource Projekten, mit denen sich üben lässt. Jan hat damit gute Erfahrungen gemacht und empfiehlt einen Blick auf das Projekt Racing-Car-Katas. So kannst du Lösungswege gut nachvollziehen, neue Erkenntnisse gewinnen und eigene Regeln aufstellen, wie du Code schreiben willst.

Tipp 4: Üben, üben, üben

Lesen, Regeln aufstellen, anderen über die (virtuelle) Schulter schauen: All das sind wichtige Faktoren, um Clean Code zu etablieren. Doch erst in der Anwendung lassen sich die Prinzipien wirklich verinnerlichen und reflektieren. Programmieren ist ein agiler, dynamischer Prozess. Deshalb empfiehlt Jan, Programmieren und Refactoring kontinuierlich zu üben.

Eine besondere Herausforderung dabei ist, mit sogenannten Altlasten umzugehen, also ‚Dirty Code’ in sauberen Code zu überführen. Diese technischen ‚Schulden’ abzutragen, erfordert eine tiefgreifende Analyse, akribische Planung und die schrittweise Umsetzung: „Man muss mit Code umgehen können, der keinen Clean Code Standards entspricht. Das kann sehr anspruchsvoll sein“, weiß Jan aus eigener Erfahrung. Doch die Mühe lohnt sich.

Tipp 5: Dokumentieren und erklären

Clean Code setzt auf klare Benennungen. Diese sind optimalerweise schon so eindeutig, dass in vielen Fällen keine zusätzlichen Erklärungen im Code nötig sind: Klassen und Objekte werden mit Nomen und Methoden meistens mithilfe von Verben benannt, zum Beispiel car.drive(). Das macht den Code selbst und die Dokumentation entsprechend übersichtlicher.

Jans zusätzliche Tipps (bei objektorientierter Programmierung):

  • mit Methoden und Klassen arbeiten,
  • Workarounds dokumentieren und
  • bei komplexeren Sachverhalten Anwendungstutorials samt einfacher Beispiele erstellen.

Tipp 6: Tools zur Unterstützung nutzen

Code immer wieder zu lesen und zu vereinfachen, ist viel Arbeit. Codeanalyse-Tools wie SonarQube können dabei unterstützen. Auch Entwicklerteams bei Capgemini nutzen die Plattform in der Projektarbeit. „Tools wie SonarQube schlagen beispielsweise Alarm, wenn Klassen oder Methoden zu lang sind oder andere Regeln missachten. Der automatisierte SonarQube-Report ist eine Hürde, die es in einem Code-Review zu nehmen gilt“, weiß Jan aus seiner eigenen Arbeit zu berichten.

Nichtsdestotrotz erinnert der Lead Software Engineer daran, dass Clean Code im Kopf anfängt. „Es gibt kein Tool, das mir die Arbeit komplett abnimmt. Auch KI stößt aktuell noch an ihre Grenzen. Clean Code ist eine Philosophie, wir müssen uns schon selbst darüber Gedanken machen, wie wir Code menschennah gestalten können“, betont Jan.

Tipp 7: Code Usability im Blick behalten

Das führt auch zu Jans letztem und wahrscheinlich wichtigsten Tipp: „Versuche deinen Code stehts aus der Perspektive eines Entwicklers zu sehen, der ihn zum ersten Mal liest.“ Um das umzusetzen, kannst du dir eine Reihe von Fragen stellen, zum Beispiel: Ist eine Methode oder Funktion gut umschrieben und selbsterklärend? Braucht es eine Erläuterung im Kommentar?

Auch ein Rollenwechsel kann helfen: Stell dir vor, ein Teammitglied ist im Urlaub und du übernimmst dessen Aufgaben. Oder du arbeitest auf einem neuen Projekt und sollst eine Anwendung weiterentwickeln. Welche Art von Code möchtest du vorfinden? Sicherlich bist du froh, wenn du dich dank Clean Code schnell orientieren und direkt loslegen kannst.


Worauf (angehende) Clean Code Developer*innen achten sollten

Ganz gleich, an welchem Punkt deiner beruflichen Laufbahn du momentan stehst: Sich mit den Prinzipien des Clean Code auseinanderzusetzen, hat viele Vorteile. Welche Ratschläge Jan speziell angehenden Entwickler*innen auf den Weg mitgeben möchte? „Auf die eigene Intuition hören, Initiative zeigen und kommunizieren. Denn im Grunde genommen ist Clean Code kein technisches Thema, sondern ein menschliches. Deshalb ist es so wichtig, im Austausch mit anderen zu bleiben.“

Auch erfahrenen Programmierer*innen kann Jan empfehlen, sich wieder auf die Anfänge zu besinnen – selbst wenn das trivial erscheint. Im Laufe der Karriere werden Schritte und Herangehensweisen irgendwann selbstverständlich. Sich die Basics gelegentlich wieder vor Augen zu führen, kann helfen, die eigene Arbeitsweise kritisch zu hinterfragen und weiterzuentwickeln.

Und wie blickt Jan, der seit 2017 bei Capgemini ist, auf seine eigene Entwicklung? „Programmierung ist ein spannendes Feld, in dem man das ganze Leben lernen darf – das ist kein Klischee. Und das ist fantastisch, denn so entwickelt man sich auch persönlich weiter“, schwärmt der Softwareingenieur. Und: „Bei Capgemini haben wir eine offene Diskussionskultur. Das hilft enorm, über den eigenen Schatten zu springen.“

Du willst deine Laufbahn in der IT starten oder den nächsten Karriereschritt wagen?

Dann bewirb dich jetzt als DevOps Engineer (w/m/d) bei Capgemini!

Jetzt mehr erfahren:

Design Patterns helfen, den Programmieralltag zu vereinfachen. Senior IT Architekt Lutz erklärt, worauf es dabei ankommt.

Programmierrichtlinien sind kein starres Regelwerk, sondern die Basis erfolgreicher Teamarbeit, berichtet Senior Delivery Architektin Lok Lam.

Inklusion spielt auch in der digitalen Welt eine große Rolle. Senior UX Experte Nico erzählt, was barrierefreie Software bedeutet.