Clean Code: Wartbar, Lesbar und Testbar
Clean Code ist ein Begriff, der Software beschreibt, die einfach zu lesen, zu verstehen, zu warten und zu testen ist. In diesem Blog möchte ich einige wichtige Prinzipien zusammenfassen, um Anfängern einen Einstieg in das Thema zu ermöglichen. Außerdem soll der Blog eine Verbindung zum Style Guide Repository, den Büchern und aktuellen Initiativen herstellen, zu denen Experten beitragen können. Wenn Sie kein Update zu Clean Code, Testautomatisierung, Communities of Practice, Entscheidungsfindung, Testbarkeit und anderen technischen / handwerklichen / architektonischen Themen verpassen wollen, abonnieren Sie den brandneuen Newsletter.
Der Artikel ist eine Übersetzung von Clean Code: Writing maintainable, readable and testable code, um die deutschsprachige Zielgruppe noch besser zu erreichen.
Was macht Clean Code aus?
Um Clean Code zu erhalten, muss man eine Reihe von Best Practices und Standards befolgen, z. B. aussagekräftige Namen verwenden, Funktionen klein und konzentriert halten und sparsam mit Kommentaren umgehen. Eine Codebasis, die lesbar und wartbar ist, ist für eine nachhaltige Entwicklung unerlässlich. Die Bücher Clean Code von Robert C. Martin, Code Complete von Steve McConnell, The Pragmatic Programmer von David Thomas/Andy Hunt und einige andere Bücher enthalten viele Best Practices und Beispiele für Clean Code.
Was ist nicht Clean Code?
Nicht Clean Code ist ein Code, der schwer zu lesen, zu verstehen und zu pflegen ist. Er kann schlecht organisiert sein, verwirrende oder irreführende Namen haben, inkonsistent gestaltet sein und andere Probleme aufweisen, die die Arbeit mit ihm erschweren.
Einige Beispiele für unsauberen Code können sein:
- Code mit langen, komplexen Funktionen, die schwer zu verstehen, zu testen und zu warten sind.
- Code mit schlechten Namenskonventionen, z. B. Variablen mit kurzen, nicht beschreibenden Namen oder Funktionen mit Namen, die ihren Zweck nicht genau wiedergeben.
- Code mit inkonsistenter Gestaltung, z. B. inkonsistente Einrückung oder Abstände, die das Lesen und Verstehen erschweren können.
- Code mit unnötigem oder redundantem Code, der die Wartung und das Verständnis erschwert.
- Code, der die Testautomatisierung erschwert, z. B. statische Kopplung zwischen Klassen.
Insgesamt ist Code, der nicht clean ist, oft anfälliger für Fehler und Bugs und kann zeitaufwändiger sein, da er mehr Aufwand zum Verstehen, Testen und Warten erfordert.
Code Quality von xkcd.com/1513/ unter Creative Commons BY-ND 2.5
Vorteile von Clean Code
Das Schreiben von Clean Code hat viele Vorteile, unter anderem:
- Verbesserte Lesbarkeit und Verständlichkeit: Clean Code ist leichter zu lesen und zu verstehen, was Entwicklern die Anpassung, Fehlersuche und Wartung erleichtern kann.
- Geringeres Risiko von Fehlern und Bugs: Clean Code ist im Allgemeinen zuverlässiger und weniger fehleranfällig, da er leichter zu verstehen, zu testen und zu warten ist.
- Höhere Produktivität: Clean Code ist einfacher und schneller zu bearbeiten, was die Produktivität und Effizienz der Entwickler steigern kann. Laut einer Metastudie [kann unsauberer Code mehr als 15 Mal mehr Fehler enthalten und die Produktivität um den Faktor 9 verringern] (https://www.linkedin.com/posts/klaus-h%C3%A4uptle-951a0349_according-to-a-meta-study-unhealthy-code-activity-6999048527821557760-mrWr?utm_source=share&utm_medium=member_desktop).
- Verbesserte Anpassungs- und Entwicklungsfähigkeit: Sauberer, modularer Code lässt sich leichter ändern und aktualisieren, so dass sich die Software im Laufe der Zeit weiterentwickeln und an veränderte Anforderungen anpassen kann.
- Verbesserte Teamzusammenarbeit: Clean Code ist für Teammitglieder leichter zu verstehen und zu bearbeiten, was die Zusammenarbeit und Kommunikation innerhalb des Teams verbessern kann.
- Bessere langfristige Wartbarkeit: Clean Code lässt sich im Laufe der Zeit leichter warten und aktualisieren, was Zeit und Ressourcen sparen kann. Außerdem verringert sich das Risiko, wenn Ingenieure zu anderen Projekten wechseln oder das Unternehmen verlassen.
- Verbesserte Wiederverwendung von Code: Clean, modularer Code lässt sich leichter wiederverwenden und in verschiedenen Kontexten neu einsetzen, was Zeit und Ressourcen sparen kann.
- Bessere Leistung: Clean Code ist im Allgemeinen effizienter und kann schneller ausgeführt werden, da er weniger komplex ist und sich bei Bedarf leichter optimieren lässt.
- Verbesserter Code-Review-Prozess: Clean Code lässt sich leichter überprüfen, da er übersichtlicher und leichter zu verstehen ist. Dies kann zu effizienteren und effektiveren Code-Reviews führen.
- Verbessertes Ansehen: Das Schreiben von Clean Code kann dazu beitragen, den Ruf des Entwicklers oder des Entwicklungsteams zu verbessern, da es das Engagement für Qualität und Professionalität demonstriert.
Insgesamt kann Clean Code dazu beitragen, dass Ihre Software zuverlässig, wartbar und einfach zu handhaben ist, was zu mehr Effizienz, Produktivität, höherer Qualität und größerer Zufriedenheit bei Entwicklern und Benutzern gleichermaßen führen kann. Die Vorteile von Clean Code gehen über den reinen Entwicklungsprozess hinaus und können sich positiv auf den langfristigen Erfolg der Software und des Teams, das daran arbeitet, auswirken.
Wichtige Clean-Code-Prinzipien und Beispiele
Lassen Sie uns zunächst einige wichtige Grundsätze für Clean Code zusammenfassen und einige einfache Beispiele anführen. Zu jedem Prinzip gibt es im Styleguide und in den Büchern noch viel mehr zu lernen.
- Clean Code macht es Entwicklern leichter, ein Softwaresystem zu verstehen, zu ändern und zu pflegen. Wenn der Code clean ist, ist es einfacher, Fehler zu finden und zu beheben, und es ist weniger wahrscheinlich, dass er bei Änderungen kaputt geht.
- Einer der wichtigsten Grundsätze für Clean Code ist die Lesbarkeit, d. h. der Code sollte auch für jemanden, der mit dem System nicht vertraut ist, leicht zu verstehen sein. Um dies zu erreichen, sollten die Entwickler z. B. aussagekräftige Namen für Variablen, Funktionen und Klassen verwenden.
- Ein weiterer wichtiger Grundsatz für Clean Code ist die Einfachheit, was bedeutet, dass der Code so einfach wie möglich sein sollte, ohne unnötige Komplexität. Um dies zu erreichen, sollten Entwickler die Verwendung komplexer Datenstrukturen oder Algorithmen vermeiden, es sei denn, sie sind notwendig, und sie sollten es vermeiden, unnötige Merkmale oder Funktionen hinzuzufügen.
- Neben der Lesbarkeit und Einfachheit sollte Clean Code auch wartbar sein, d. h. er sollte leicht zu ändern und zu aktualisieren sein, ohne dass er kaputt geht. Um dies zu erreichen, sollten Entwickler modularen Code schreiben, der in kleine, zielgerichtete Funktionen unterteilt ist, und doppelten Code vermeiden.
- Schließlich sollte ein Clean Code gut dokumentiert sein. Das bedeutet, dass er klare und prägnante Kommentare enthalten sollte, die den Zweck und die Funktionalität des Codes erklären. Die Kommentare sollten jedoch nicht dazu dienen, den Code selbst zu erklären; der Code sollte so geschrieben sein, dass er selbsterklärend ist.
Insgesamt ist Clean Code ein wesentlicher Bestandteil der Softwareentwicklung. Er erleichtert das Verständnis und die Wartung eines Systems und kann helfen, Fehler und andere Probleme zu vermeiden.
The Style Guide Repository
https://github.com/SAP/styleguides
Deutsche Version https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP_de.md
Unter der CC BY 3.0-Lizenz und offen für Beiträge innerhalb und außerhalb von SAP hoffen wir, dass dieses Repository Entwicklern auf der ganzen Welt helfen wird, ihren Code Tag für Tag ein wenig cleaner zu gestalten.
Das langfristige Ziel des Style Guide Repository ist es, die wichtigsten Programmiersprachen der SAP-Welt abzudecken. Bisher ist nur ABAP abgedeckt, aber ich bin überzeugt, dass noch mehr kommen wird. Vielleicht werden wir auch in der Lage sein, Java, TypeScript, Kotlin, Go und mehr abzudecken – eher ein Wunsch als die Realität.
Die Bücher
Es gibt mehrere Bücher, die das Thema detailliert behandeln, die Argumentation erläutern und sie auf bestimmte Programmiersprachen anwenden.
Die Bücher sind auch sehr gut für Anfänger oder Einsteiger in die Programmiersprachen geeignet. Oder Kollegen, die Clean ABAP bereits beherrschen und Clean SAPUI5 erlernen wollen. Und selbst Experten in der Programmiersprache erwähnten, dass sie viel gelernt haben und es eine Quelle der Inspiration war.
Clean Code Book Family für ABAP und SAPUI5 / JavaScript
Eine Grundlage für Verbesserungen
Die Hauptvorteile eines gemeinsamen Verständnisses eines Codestils in einer bestimmten Programmiersprache sind bessere Wartbarkeit, Lesbarkeit und Testbarkeit. Es gibt aber auch viele andere Vorteile und neue Möglichkeiten, die in diesem Blog näher untersucht werden:
- Warum ein gemeinsamer Satz von Regeln? Wenn eine Organisation wächst, hilft es, die Codebasis konsistent zu halten und ermöglicht es den Entwicklern, sich auf die wichtigen Aspekte zu konzentrieren. Durch einen einheitlichen Codestil gibt es weniger Konflikte über Grundlagen (z.B. Formatierung).
- Förderung des Prinzips der Optimierung des Codes für den Leser: Da Code viel öfter gelesen als geschrieben wird, ist ein wichtiger Grundsatz für alle Regeln, den Code für den Leser und nicht für den Autor zu optimieren. Daher gewichtet der Styleguide die Lesbarkeit höher als die Verwendung mächtiger Ausdrücke, die dem Schreiber erlauben, etwas prägnant auszudrücken, aber später schwer zu lesen sind.
- Konsistenz der Codebasis: Wenn die Codebasis nach denselben Prinzipien und unter Berücksichtigung des Styleguides aufgebaut ist, können Ingenieure in einen ihnen unbekannten Teil des Codes einsteigen und schnell Verbesserungen vornehmen.
- Verbessern Sie die Erfahrung der Entwickler: Ein konsistenter Styleguide schafft ein eigenes Ökosystem und ermöglicht es, die Erfahrung der Entwickler zu verbessern. Nach der Veröffentlichung des Styleguides im Jahr 2019 begann die Community mit der Entwicklung von Werkzeugen zur Verbesserung von Code-Reviews, dokumentierte Code-Review-Praktiken, erweiterte statische Code-Prüfungen, entwickelte Schulungsformate und erstellte einige Werkzeuge zur automatischen Korrektur von Code. Diese Konsistenz schuf die Grundlage für mehrere InnerSource/Open-Source-Projekte, Plattformverbesserungen und löste die Erforschung weiterer Ideen aus.
- Skalierung einer Organisation: Wenn eine Organisation wächst, ist es wichtig, ein gemeinsames Verständnis für den Codestil zu haben. Es hilft dabei, neue Entwickler schneller einzuarbeiten und die Zeit für Pair Programming oder Code Reviews auf andere Aspekte zu konzentrieren.
- Auch andere Rollen – nicht nur Entwickler – profitieren, z. B. Berater, die Erweiterungen vornehmen müssen, oder SRE-Teams (Site Reliability Engineering), die den Betrieb verbessern müssen.
- Die Konsistenz verbessert auch die langfristige Wartung, da neue Ingenieure, die die Verantwortung übernehmen, den Code schneller verstehen und pflegen können.
- Der Styleguide ermöglicht die Durchsetzung von Regeln mit statischen Codeprüfungen oder sogar die Entwicklung automatischer Korrekturen. So entfallen einige Diskussionen, was es den Entwicklern ermöglicht, ihre Zeit auf wichtigere Aspekte zu konzentrieren.
Aktuelle Aktivitäten
Mit dem Erfolg des Styleguides und der Anzahl der Verbesserungsvorschläge ergibt sich die Notwendigkeit eines formelleren Prozesses, wenn es um die Überprüfung von Verbesserungsvorschlägen geht. Der gesamte Prozess muss transparent sein und es muss Klarheit für die Entscheidungsfindung herrschen.
Dazu gehört auch Klarheit darüber, wie die Vorschläge eröffnet und bearbeitet werden und in welchem Zeitrahmen man mit einer Entscheidung rechnen kann. Außerdem brauchen wir vor allem für Änderungen mit größeren Auswirkungen (z.B. inkompatible Änderungen) einen formalen Prozess für die Entscheidungsfindung, da sich diese Änderungen auch in statischen Codeprüfungen niederschlagen und damit eine große Anzahl von Entwicklern betreffen.
In den letzten Monaten haben wir daran gearbeitet, den gesamten Prozess zu dokumentieren und unsere Leitprinzipien für die Einbeziehung der Gemeinschaft und die Entscheidungsfindung niederzuschreiben. Der Prozess wird bald veröffentlicht werden.
Abonnieren Sie den Newsletter, um auf dem Laufenden zu bleiben.
Wenn Sie kein Update über Clean Code, Testautomatisierung, Communities of Practice, Entscheidungsfindung, Testbarkeit und andere technische / handwerkliche / architektonische Themen verpassen wollen, abonnieren Sie den brandneuen Newsletter. Der Newsletter dient nicht nur dem Wissensaustausch, sondern bietet auch Möglichkeiten zur Zusammenarbeit, zum Aufbau von Gemeinschaften und zur gemeinsamen Gestaltung.