Clean Code

Vor einiger Zeit bin ich auf eine Initiative gestoßen, die sich das hehre Ziel gesetzt hat, die Software dieser Welt besser zu machen. Ich überteibe hier ein bisschen, aber es geht in diese Richtung. Die beiden Softwareentwickler Ralf Westphal und Stefan Lieser machen sich auf ihrer Seite http://www.clean-code-developer.de/ Gedanken darüber, was eigentich einen guten Softwareentwickler ausmacht. Nach meiner Interpretation stellen sie im Wesentlichen zwei Forderungen an einen professionellen Softwareentwickler. Erstens eine innere Einstellung und ein Wertesystem, das den Entwickler dazu treibt, sich (und seine Umgebung) zu verbessern, dazu zu lernen, offen für Neues zu sein, Prozesse und Regeln zu hinterfragen und so eine aktive Rolle einzunehmen. Zweitens müsse ein professioneller Entwickler gewisse Techniken und Prinzipien beherrschen, um sauberen und damit auch wartbaren Code zu erzeugen, der auch nach ökonomischen Kriterien Bestand hat.

Die Art, wie ihre Ideen umgesetzt und geübt werden sollen, ähnelt fernöstlichen Kampfsportarten. Die zu übenden Techniken sind in ein Farbschema eingeteilt, das gleich einem Regenbogen von Rot über Orange, Gelb, Grün, Blau bis zu Weiß reicht. Das Farbschema entspricht dem Schwierigkeitsgrad der Techniken. Wer am roten Grad arbeitet, befasst sich mit relativ grundlegenden Prinzipien, während der blaue Grad schon deutlich komplexere Techniken beinhaltet. Wesentlich ist aber, dass man sich immer auf jene Techniken konzentriert, die im gerade aktuellen Grad enthalten sind. Und so wie die Farbe Weiß alle anderen Farben umfasst, so beinhaltet der weiße Grad auch die gleichzeitige Anwendung aller Prinzipien der anderen Grade. Und wie in der östlichen Philosophie, die nicht die lineare sondern die zyklische Entwicklung in den Vordergrund stellt, beginnt der Clean Code Developer nach Erreichen des weißen Grades wieder mit dem ersten, dem roten Grad, um seine Technik zu perfektionieren - wie ein Karate-Kämpfer, der seine Kata immer wieder von vorne trainiert.

Aber welche Techniken werden in diesem Programm überhaupt propagiert? Es handelt sich um relativ universelle Prinzipien moderner Softwareentwicklung, die weitgehend unabhängig von einer konkreten Programmierumgebung sind. Die Themen sind ein bisschen zusammengewürfelt aus verschiedenen Bereichen: Design Pattern, Software Entwicklungszyklus, Teamarbeit,... Allerdings finde ich die Auswahl der Themen durchaus gelungen und lohnenswert für einen Selbstversuch. Besonders gefallen hat mir ein Gedanke, der sich wie ein roter Faden durch das ganze Programm zieht: "Hinterlasse einen Ort immer in einem besseren Zustand, als du ihn vorgefunden hast". Es geht nicht darum, die ganze Welt auf einmal zu verbessern, es geht nicht darum, bestehende Software von Grund auf neu zu designen. Es geht um kleine Schritte. Wenn wir wieder einmal ein Stück Code angreifen müssen, um einen Fehler zu korrigieren oder eine neue Funktionalität einzubauen, dann nehmen wir das doch gleich zum Anlass, Unschönheiten auszubügeln. Und wenn es nur ein sprechenderer Name für eine Variable ist. Kein Auftraggeber wird ein dickes Bündel Geld in die Hand nehmen, damit Sie den Code "sauberer" machen, wenn er keinen konkreten Nutzen sieht (auch wenn dieser in Form von besserer Wartbarkeit, geringerer Fehleranfälligkeit usw. durchaus gegeben sein kann). Aber die kleinen Verbesserungen, die man so nebenbei vornimmt, kann einem niemand verweigern.

Übrigens gibt es das Buch von Robert C. Martin, das die Autoren als eine ihrer Inspirationsquellen nennen, in deutscher Übersetzung bei Amazon um . 39,95: Clean Code - Refactoring, Patterns, Testen und Techniken für sauberen Code: Deutsche Ausgabe

Get in touch