| 

.NET C# Java Javascript Exception

12

Das Open Closed Principle, oder kurz OCP, ist eines der fünf Prinzipien aus SOLID, das dabei helfen kann, wartbaren und evolvierbaren Code zu schreiben. Vereinfacht fordert es eine Struktur, die es erlaubt, Neues zu ergänzen (Open), ohne dabei Altes verändern zu müssen (Close). Im Original heißt es entsprechend:

Open for extension, but closed for modification

Das klingt oberflächlich betrachtet sinnvoll, denn so bleibt das Vertrauen in einmal geschriebenen (und erfolgreich getesteten) Code bestehen – er muss ja nicht mehr angefasst werden.

Klassisch finden sich hierzu Beispiele, die sich mit Switch/Case Statements auseinandersetzen und aufzeigen, wie sich diese in Schnittstellen und Klassen zerlegen lassen. Ich habe vor einigen Jahren auf CodePlex eine Solution hochgeladen, die hingegen mehrfach verschachtelte If/Then/Else-Zweige aufbricht und Schritt für Schritt mit Hilfe des sog. Strategy Patterns aufzeigt, wie das OCP eingehalten werden kann.

Tipp:Wo Du u.a. ein nicht öffentlich gelistetes Video zu dem Thema von mir sehen kannst, findest Du am Ende dieses Artikels heraus.

 

Um aufzuzeigen, was für einen messbaren Effekt das Vorgehen hat, hier einige Metriken zu einer der in dem Beispiel verwendeten Klassen:

image

Was aber bedeuten diese Metriken?

Hier eine kurze Einführung:

  • Der “Maintainability Index” misst, wie einfach Code gewartet werden kann. Je höher der Index, desto besser.
  • Die “Cyclomatic Complexity” zählt die Anzahl an Verzweigungen. Je weniger, desto besser.
  • Die “Depth of Inheritance” bringt die Tiefe der Vererbungshierarchie zum Ausdruck. Je geringer der Wert, desto besser.
  • Das “Class Coupling” misst, die Anzahl an Klassenreferenzen. Je weniger, desto besser.
  • Die “Lines of Code” zählt die Anzahl ausführbaren Codes. Je weniger, desto besser.

In meinem Beispiel zeigt sich also nach dem Refactoring, dass der Wartungsindex von 74 auf 90 gesteigert werden konnte und der Code damit um ca. 22% wartbarer ist als zuvor.

Die Zyklomatische Komplexität wurde mehr als halbiert. Es wurden während der Entwicklung 15 Verzweigungen entfernt.

Darüber hinaus wurden die ausführbaren Codezeilen massiv reduziert, was letztlich in deutlich lesbarerem Code resultiert und dadurch dazu beiträgt, potentiellen Bugs weniger Angriffsfläche zu bieten.

Was in diesem kurzen Artikel nicht gezeigt wird – dafür ist das Thema einfach zu umfangreich: Um diese Ziele zu erreichen, wurden auf der anderen Seite wiederum viele Schnittstellen und Klassen eingeführt. Auch bewegt sich die Struktur des Codes auf einem höheren Niveau und wird von Juniorentwicklern bspw. unter Umständen nicht auf Anhieb verstanden.

Gerade deshalb ist es wichtig, dass sich Entwickler mit Prinzipien, Mustern und auch High-Level Architekturen auseinandersetzen und diese zu erkennen lernen.

Falls Du Dich nun angesprochen fühlst, hast Du mindestens drei Möglichkeiten, von mir zu lernen, wie das Open Closed Principle funktioniert und Du es am Beispiel des Strategy Patterns umsetzen kannst:

  1. Du liest den Artikel, den ich hierzu bereits 2012 auf unserem Blog veröffentlicht habe.
  2. Du lädst meinen Beispielcode inkl. Lab-Beschreibung von codeplex herunter
    ACHTUNG: Codeplex schließt seine Pforten. Ich weiß nicht, wie lange Du das Learn & Research Lab dort noch bekommst!
  3. Du schaust Dir die Aufzeichnung meiner Session zu dem Thema von der Developer Week bei YouTube an (das Video ist nicht öffentlich gelistet).

Falls Du Fragen dazu hast, freue ich mich über Kommentare oder gerne auch Emails. Wenn Du diesen  Artikel bei CodeKicker liest: Vote ihn hoch, wenn er Dir geholfen hat.

Und nun: Viel Spaß beim Refaktorisieren!

howto empfehlung top-technologies developer-week dwx
Weitere News:
Schreibe einen Kommentar:
Themen:
dwx developer-week top-technologies empfehlung howto
Entweder einloggen... ...oder ohne Wartezeit registrieren
Benutzername
Passwort
Passwort wiederholen
E-Mail