Clean Code
Clean Code ist ein Begriff aus der Softwaretechnik, der durch das gleichnamige Buch von Robert Cecil Martin populär wurde. Als „sauber“ (clean) bezeichnen Softwareentwickler in erster Linie Quellcode, aber auch Dokumente, Konzepte, Regeln und Verfahren, die intuitiv verständlich programmiert bzw. konzipiert sind. Vorteile von Clean Code sind stabilere und effizient wartbare Programme, was in einer kürzeren Entwicklungszeit bei Funktionserweiterungen und Fehlerbehebungen resultiert. Vor dem Gesichtspunkt, dass im Schnitt 70–80 % der Lebensdauer einer Software in den Wartungszeitraum fällt[1][2], erhält die Einhaltung von Clean Code-Prinzipien zur Verbesserung der Leserlichkeit und Verständlichkeit besondere Relevanz.
Schwierigkeiten beim Entwickeln von Clean Code liegen
- häufig in zunächst unklaren oder sich widersprechenden Anforderungen,
- zum Teil begründet im Fehlen von Erfahrung im Entwickeln von Clean Code,
- im Mangel an Disziplin beim Programmieren und
- im Aufwand nachträglicher Quellcode-Bereinigungen (dem sog. Refactoring).
Die Notwendigkeit, Code noch nach der Entwicklung von „unsauberen“ Stellen zu reinigen, wird häufig nicht gesehen oder vom Management nicht bewilligt, sobald das Programm seine vorgesehene Funktion ausübt. Ein direktes Schreiben von „sauberem“ Code ist nahezu unmöglich, kann jedoch durch den bewussten Umgang mit den Prinzipien und Praktiken von Clean Code verbessert werden.
Eng verbunden mit dem Begriff Clean Code sind Maßnahmen, die bei der Entwicklung von Software zu „sauberem“ Programmcode führen. So zahlreich wie die Gründe für „unsauberen“ Code sind, so vielfältig sind auch die vorgeschlagenen Regeln in den aufgestellten Maßnahmenkatalogen. Dazu gehören:
- Quelltextformatierung (engl. code conventions),
- Entwurfsmuster (engl. design patterns),
- Konvention vor Konfiguration (engl. convention over configuration),
- eine umfangreiche Menge an Vorschlägen aus dem Buch Clean Code von Robert C. Martin.
Darüber hinaus gibt es seit einigen Jahren eine Clean-Code-Developer-Bewegung, die das Ziel verfolgt, ein einheitliches und umfassendes Regelwerk auf eine didaktisch ansprechende Weise in das Bewusstsein der Entwickler zu rücken und damit die Disziplin zu fördern, die Clean-Code-Maßnahmen im Programmieralltag auch tatsächlich anzuwenden. Als Maßnahme, diese Vorgehensweise zu üben, werden Katas vorgesehen.
Siehe auch
[Bearbeiten | Quelltext bearbeiten]- Software Craftsmanship
- Principle of Least Surprise
- Don’t repeat yourself
- YAGNI (You Ain’t Gonna Need It)
- KISS-Prinzip
- Single-Responsibility-Prinzip
- Konvention vor Konfiguration
- Gesetz von Demeter (Law of Demeter)
- Liskovsches Substitutionsprinzip
Literatur
[Bearbeiten | Quelltext bearbeiten]- Kent Beck: Clean code: Pipe dream or state of mind? In: Smalltalk Report. Band 4, Nr. 8, Juni 1995, S. 20–22 ([1] [PDF; abgerufen am 3. April 2023]).
- Robert C. Martin: Clean Code: Refactoring, Patterns, Testen und Techniken für sauberen Code. mitp-Verlag, ISBN 978-0-13-235088-4.
- Andreas Wintersteiger: Clean Code. In: Der Entwickler. 12. Juni 2012 ([2] [abgerufen am 16. März 2018]).
- Hendrik Lösch: Clean Code vs. Abhängigkeiten. In: Informatik Aktuell. 20. Juni 2017 ([3] [abgerufen am 16. März 2018]).
- Juliane Conte: Clean Code Developer aus Unternehmenssicht. In: Heise Developer. 5. Dezember 2011 ([4] [abgerufen am 16. März 2018]).
Weblinks
[Bearbeiten | Quelltext bearbeiten]- Homepage der Clean-Code-Developer-Initiative
- Homepage mit allen CleanCode Prinzipien
- Google Group: Clean Code Developer
- Urs Enzler: Clean Code Cheat Sheet. (PDF) Abgerufen am 21. Dezember 2016.
- Steven C. McConnell: Code Complete Checklists. (PDF) Abgerufen am 17. April 2013.
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Meir M. Lehman: Programs, Life Cycles, and Laws of Software Evolution. In: Institute of Electrical and Electronics Engineers (Hrsg.): PROCEEDINGS OF THE IEEE. Vol. 68, No. 9, September 1980, S. 1060.
- ↑ D.J. Robson, K.H. Bennett et al.: Approaches to program comprehension. In: Elsevier (Hrsg.): Journal of Systems and Software. Volume 14, Issue 2, Februar 1991, ISSN 0164-1212, S. 79–84.