Clean Code Development – Prinzipien und Praktiken zur Steigerung der Software Qualität

Software Qualität ist ein Trendthema aber wie erreicht man eine hohe
Qualität? Reichen gängige Instrumente wie UnitTests und Code-Reviews aus?
Clean Code Development bietet keine fertigen Problemlösungen sondern fasst Prinzipien und Praktiken zusammen und sieht eine stufenweise Einführung derer vor. Ohne auf die einzelnen Grade, welche den Weg zum Clean Code Developer beschreiben, einzugehen möchte ich hier ein paar ausgewählte Prinzipien kurz vorstellen.
Don’t Repeat Yourself (DRY)
Code Duplizierung sollte vermieden werden, da Anpassungen an mehreren stellen erfolgen müssen um Konsistenz zu gewährleisten. Eigentlich ein alter Hut aber Copy & Paste ist in der Praxis weit verbreitet.
Keep it simple, stupid (KISS)
Mach es nicht komplizierter als notwendig.
Ja, auch wenn es dir uncool und langweilig erscheint!
Favour Composition over Inheritance (FCoI)
Bei der Vererbung entstehen Abhängikeiten von den Subklassen zu den Elternklassen, was das Austauschen der Funktionalität zur Laufzeit erschwert. Wird die Vererbung inflationär verwendet, kann dies ein System schnell unnötig komplex und schlecht testbar werden lassen.
Bei der Komposition verwendet eine Klasse eine andere, was die Abhängigkeiten reduziert und die Testbarkeit wesentlich vereinfacht.
You Ain’t Gonna Need It (YAGNI)
Dieses Prinzip bedeutet soviel wie “implementiere nichts was du nicht brauchst”. Das klingt logisch aber dennoch hab ich selbst schon gegen dieses Prinzip verstoßen.
In der Praxis wird versucht Software auf künftige Anforderungen vorzubereiten aber oft stellt sich später heraus, dass sich die ursprünglich erwarteten Anforderungen tatsächlich nie ergeben haben.
Statt dessen ergeben sich natürlich ganz andere Anforderungen die nicht berücksichtigt wurden und deren Umsetzung jetzt durch unnötigen Balast behindert werden.
Die Praktiken des Clean Code Developments sind Methoden und Techniken die ständig eingesetzt werden sollten und umfassen zum Beispiel das Issue Tracking, automatisierte Integrationstests, Continuous Integration, statische Codeanalysen aber auch das Weitergeben von Erfahrungen und die Teilnahme an Fachveranstaltungen.
Mehr zu Clean Code Development gibt es unter
http://www.clean-code-developer.de