Werte, Prinzipien und Praktiken der Softwareentwicklung nach dem Clean Code Ansatz
Softwareentwicklung nach dem Clean Code Development Ansatz
Erfahren Sie in diesem Blogbeitrag, auf welchen Werten, Praktiken und Prinzipien die Softwareentwicklung nach dem Clean Code Development Ansatz basiert.
Peter Wichert-Schindler, Project Management Development
Logisch, verständlich und nachvollziehbar – oder in einem Wort: Sauber. So soll nach dem Clean Code Development Ansatz Code gestaltet sein, damit dieser möglichst einfach lesbar, erweiterbar, änderbar und wartbar ist. Sind diese Kriterien erfüllt, lässt sich Software jeglicher Art effizient und effektiv produzieren.
Um in unterschiedlichsten Kundenprojekten eine noch bessere Codequalität zu gewährleisten, legt die Softway AG deshalb einen sehr starken Fokus auf sauberen Code. Dazu werden in regelmäßigen Abständen hausinterne Schulungen durchgeführt, um die Hintergründe, Werte, Prinzipien und Praktiken des Clean Code Development zu erläutern.
In diesem Blogbeitrag möchten wir deshalb einen Blick auf die vier wesentlichen Werte für logischen, verständlichen und nachvollziehbaren Code werfen und gleichzeitig häufig verwendete Praktiken und Prinzipien vorstellen.
Das Fundament des Clean Code Ansatz
Das Fundament für sauberen Code nach dem Clean Code Development Ansatz besteht dabei aus vier Werten, die von den Entwicklerinnen und Entwicklern befolgt werden sollen:
- Wandelbarkeit
- Korrektheit
- Produktionseffizienz
- Kontinuierliche Verbesserung
Wandelbarkeit
Software wird sehr oft über mehrere Jahre hinweg genutzt und weiterentwickelt. Dabei gilt: Kann diese einfach an geänderte Rahmenbedingungen angepasst werden, ist eine hohe Wandelbarkeit gegeben. Allerdings muss Software von vornherein darauf ausgelegt sein, wandelbar zu sein. Je später das Thema der Wandelbarkeit in den Fokus der Entwicklung gerät, desto aufwändiger, teurer und schwieriger werden Anpassungen.
Steigern lässt sich die Wandelbarkeit durch verschiedene Entwurfsprinzipien, die Einfluss auf die Softwarearchitektur haben. Dazu zählt etwa die Abstraktion von Informationen, die Trennung von Zuständigkeiten, die Nutzung von Schnittstellen oder die Kopplung von Komponenten.
Korrektheit
Software muss funktional korrekt sein. Eine Tabellenkalkulation muss richtig rechnen oder ein Buchhaltungsprogramm die Buchungen ordnungsgemäß verbuchen. Aber auch nicht-funktionale Anforderungen müssen erfüllt sein. So sollte das entwickelte Programm schonend mit Ressourcen wie Speicher oder Prozessorzeit umgehen und Antwortzeiten sollten in einem definierten Rahmen liegen.
Zur Korrektheit gehört allerdings auch der richtige Umgang mit Anforderungen. Erst wenn zu 100 Prozent klar ist, unter welchen Voraussetzungen und mit welchen Vorgaben eine Software implementiert werden soll, kann mit dem Prozess begonnen werden. Sind noch Punkte unklar, gilt es zuerst so lange nachzufragen, bis alle Anforderungen bekannt sind.
Produktionseffizienz
Die Produktion von Software jeglicher Art sollte im Optimalfall besonders effizient geschehen. Am Ende der Entwicklung einer Software spielt immer die investierte Zeit und das Budget eine Rolle. Wird bei der Entwicklung unsauber gearbeitet, ist das Budget schnell aufgebraucht beziehungsweise dauert die Umsetzung deutlich länger als vorher veranschlagt. Code, der schwer zu lesen, zu ändern, zu erweitern oder zu warten ist, verstärkt den negativen Einfluss auf das Zeit- und Kostenbudget.
Wird hingegen Wert auf eine effiziente Produktion gelegt, bedeutet dieses Vorgehen, dass Software über Jahre oder sogar Jahrzehnte weiterentwickelt werden kann, ohne an einem bestimmten Punkt wieder von vorne beginnen zu müssen. Gleichzeitig reduziert eine hohe Produktionseffizienz die Fehleranfälligkeit des generierten Codes und übt einen positiven Einfluss auf das Zeit- und Kostenbudget aus.
Gleichzeitig dient die Produktionseffizienz dazu, die anderen hier vorgestellten Werte in ein maßvolles Verhältnis zu setzen. Einerseits um etwa den Aufwand und die Korrektheit von Software nicht unendlich in die Höhe zu schrauben und andererseits, um Gold Plating (Entwicklung zusätzlicher Aspekte, die nicht vom Auftraggeber gefordert wurden) oder Overengineering (Entwicklung von Software mit höherer Qualität als vom Auftraggeber verlangt) zu verhindern.
Kontinuierliche Verbesserung
Der Wert „kontinuierliche Verbesserung“ dient dazu, alles bisher Umgesetzte im Projekt zu reflektieren. Wer sich noch einmal in Erinnerung ruft, auf welche Art und Weise Aufgaben gelöst wurde, kann feststellen, ob die durchgeführten Prozesse besonders simpel oder eher beschwerlich waren. So ist sichergestellt, dass ein kontinuierlicher Lern- und Verbesserungsprozess angestoßen wird. Eine besonders empfehlenswerte Methode in diesem Zusammenhang sind regelmäßig durchgeführte Retrospektiven, bei denen das bisher geleistete bewertet wird und gegebenenfalls Verbesserungen vorgeschlagen werden. Zusätzlich ist es hilfreich mit sogenannten Iterationen zu arbeiten. Damit sind mehrfache Wiederholungen gleicher oder ähnlicher Prozesse gemeint, um beurteilen zu können, an welcher Stelle möglicherweise Probleme auftreten beziehungsweise an welcher Stelle Abläufe besonders gut funktionieren.
Gewichtung der Clean Code Development Werte
Auf welchen Wert sollen Entwicklerinnen und Entwickler nun als erstes achten?
Diese Frage lässt sich pauschal nicht beantworten, da es keine festgelegte Rangfolge gibt. Im Grunde bilden alle vier vorgestellten Werte das Fundament des Clean Code Development Ansatz und sind demnach mindestens gleichbedeutend. Dennoch wird mit dem Thema „Wandelbarkeit“ eine Grundhaltung angesprochen. Wandelbarkeit bedeutet offen zu sein für zukünftige Anforderungen und Evolutionen und beschreibt damit die so wichtige Anpassung von Code an sich verändernde Rahmenbedingungen. Damit stellt die Wandelbarkeit den potentiell wichtigsten Wert im Fundament des Clean Code Development dar.
Umsetzung der vier Grundwerte in die Praxis
Möglicherweise denken Sie sich als Leser gerade: Ist ja alles schön und gut, aber wie genau setze ich diese Werte nun in meiner täglichen Arbeit um?
An dieser Stelle kommen schließlich die eingangs erwähnten Prinzipien und Praktiken ins Spiel. Da die vorgestellten Werte zu abstrakt sind, um eine alltägliche Umsetzung zu gewährleisten, wurden Bausteine entwickelt, die mindestens jeweils einen der beschriebenen Werte fördern. Die Prinzipien und Praktiken des Clean Code Development.
Prinzipien des Clean Code Development
Prinzipien sind Grundsätze zur Strukturierung von Software. Diese Grundsätze ergänzen sich in der Regel untereinander und idealerweise wird immer die höchstmögliche Zahl an Prinzipien beachtet. Wird bei der Entwicklung von Software nicht auf die Prinzipien geachtet, zeigen sich die damit verbundenen Auswirkungen spätestens mittelfristig oder bei steigenden Aufwänden durch Anpassungen. Ob Prinzipien eingehalten wurden oder nicht lässt sich oft anhand des implementierten Codes ablesen.
Zwei Beispiele für wichtige Prinzipien des Clean Code Development:
- DRY – Don’t Repeat Yourself: Soll der Wiederholung von Software-Mustern entgegen wirken.
- KISS – Keep It Simple and Stupid: Stets die einfachste Lösung für ein Problem finden.
Praktiken des Clean Code Development
Praktiken sind Methoden und Techniken, die kontinuierlich zum Einsatz kommen und dabei beschreiben, was Clean Code Developer praktisch umsetzen. Gemeint sind damit feste Handlungsanweisungen, bei denen oftmals auch Werkzeuge eingesetzt werden. Anders wie bei den Prinzipien lässt sich bei der Implementierung von Code nicht erkennen, ob eine bestimmte Praktik umgesetzt wurde oder nicht.
Zwei Beispiele für Praktiken:
- Täglich reflektieren: Reflexion ist die Voraussetzung , um etwas aktiv zu erlernen.
- Pfadfinderregel beachten: Die Regel der Pfadfinder besagt: „Hinterlasse einen Ort immer in einem besseren Zustand, als du ihn vorgefunden hast.“ In die Welt des Codings übersetzt bedeutet diese Regel, dass Kleinigkeiten im Code verbessert und Fehler beseitigt werden sollten, bevor sie zu größeren Problemen werden.
Übersicht zum Clean Code Development
Weitere Praktiken und Prinzipien stellen wir Ihnen in den Blogbeiträgen zu den verschiedenen Graden des Clean Code Development vor. Hier finden Sie eine Übersicht über die Themen der bisherigen und kommenden Blogbeiträge:
» Was ist Clean Code Development?
» Das Wertesystem, die Prinzipien und Praktiken des Clean Code Development (dieser Blogpost)
Die Unterschiedlichen Grade des Clean Code Development:
Quellen
Für die Blogbeitrage zum Clean Code Development wurden die Ausarbeitungen von folgenden Internetauftritten herangezogen: