Skip to content

Die Kunst des Denkens in Objekten

Warum sauberer objektorientierter Code mehr verlangt als nur Klassen zu schreiben

White Balloon

Foto von Kiran CK auf Unsplash

Die höhere Stufe der Modularisierung

Heute befassen wir uns mit der nächsten Ebene der Software-Modularisierung: den Objekten. An diesem Punkt wird das Thema Clean Code anspruchsvoller, da die objektorientierte Programmierung völlig neue Gestaltungsmöglichkeiten eröffnet – und damit auch zusätzliches Wissen und neue Regeln erfordert. Ein ähnlicher Komplexitätssprung findet übrigens auch bei funktionalen Programmiersprachen statt, wo wir allerdings mit Funktionen statt mit Objekten modellieren.

Wann ist objektorientierter Code wirklich "clean"?

Die kurze Antwort: Wenn die objektorientierten Design-Prinzipien konsequent eingehalten werden. Hinter dieser einfachen Aussage verbirgt sich jedoch eine ganze Welt von Konzepten und Praktiken. Grundsätzlich gilt: Wenn eine objektorientierte Sprache wie Java zum Einsatz kommt, sollte man auch tatsächlich objektorientiert denken und programmieren.

Die aktuelle Realität

In der Praxis sehen wir heute häufig prozeduralen Code in objektorientierter Verkleidung. Ein typisches Beispiel ist die klassische Spring-Boot-Anwendung mit drei Schichten. Das ist verständlich, denn echte Objektorientierung ist anspruchsvoll und erfordert fundiertes Wissen in Bereichen wie objektorientierter Analyse und Design (OOAD) sowie Design Patterns. Wer tatsächlich prozedural programmieren möchte, könnte zu modernen Cloud-orientierten Sprachen wie Go greifen, die für diesen Ansatz optimiert sind.

Essenzielle OO-Prinzipien für Clean Code

Bei einer hybriden Programmierung sollte man mindestens auf diese grundlegenden Aspekte achten:

  • Echte Kapselung: objekt.getA().getB() vermeiden und durch aussagekräftige Methoden wie objekt.macheEtwas() ersetzen

  • Kleine Klassen: Wie Funktionen sollten auch Klassen überschaubar bleiben

  • Single Responsibility Principle: Jede Klasse sollte nur für ein Thema/Konzept verantwortlich sein (aus dem bekannten SOLID-Katalog)

  • High Cohesion, Low Coupling: Hohe innere Zusammengehörigkeit bei geringer äußerer Abhängigkeit

  • Und weitere wichtige Prinzipien...

Die häufigsten Fallen in der Praxis

In meiner Erfahrung sind dies die verbreitetsten Probleme:

  1. Entwickler packen zu viele Verantwortlichkeiten in eine einzelne Klasse

  2. Der Namensgebung von Klassen wird zu wenig Aufmerksamkeit geschenkt

  3. Die öffentliche Schnittstelle einer Klasse wird nicht sorgfältig durchdacht

Das eigentliche Ziel

Objektorientierte Programmierung soll die Entwicklung vereinfachen, indem wir mit Klassen die Begriffe und Konzepte der Fachdomäne direkt abbilden können. Dies ist eine spezifische Methode der Modellierung – und wie bei jeder Methode gilt: Nur wenn man deren Grundprinzipien folgt, wird sie funktionieren. Andernfalls entstehen mehr Probleme als Vorteile.

Der Weg zum erfolgreichen OO-Design

Das Verständnis von Java als Sprache bedeutet noch lange nicht, dass man damit automatisch gute objektorientierte Systeme bauen kann. Ohne fundierte Kenntnis und Anwendung von OO-Prinzipien entsteht schnell schwer wartbarer Code. Daher ist es entscheidend, diese Konzepte gründlich zu erlernen.

Man muss nicht sofort hochflexible, perfekt erweiterbare Designs schaffen – es reicht zunächst, sich an einige grundlegende Regeln zu halten. Die größte Herausforderung liegt darin, Klassen so zu modellieren, dass sie gegenüber Änderungen geschlossen, aber für Erweiterungen offen sind – ein Prinzip, das besonders bei Framework-Entwicklung relevant wird.

Author

Sebastian Bergandy
Sebastian Bergandy