Wie angekündigt aus einem vorherigen Post will ich etwas auf die Prinzipien eingehen. Es hat sich in der Zwischenzeit ja durch Ralf Westphal und Stefan Liser in dieser Richtung auch nochmal einiges getan, die CCD-Initialive.
Und wie der Zufall so will, hat Scott Hanselman gerade diese Woche einen Webcast über S.O.L.I.D. gehalten. Nach seinem Webcast Nr. 145 mit Unclebob, wie Robert C. Martin ja in der Community genannt wird, habe ich mir deshalb gedacht ich schreibe ein bischen zusammen wofür das Single Responsibility Prinzip steht - um es einfach nochmal aufzufrischen und zu reflektieren.
Und hier nun nicht nur die reflektierten Hanselminutes des S, sonder auch noch ein paar eigene Meinungen von mir:
- Eine Klasse oder auch Funktion sollte nur einen einzigen Grund haben sich zu ändern
- Daraus folgt, dass diese sehr klein gehalten werden (Funktion niemals größer als eine Bildschirmseite ca. 50 Zeilen, besser noch kleiner ca. 10-20)
Vorteile:
- Einfache Namesfindung von Bezeichner
- Es gibt nur eine Zuständigkeit, die frei von Seiteneffekt geändert werden kann. Membervariablen sind nur noch für einen speziellen Zweck und es besteht nicht die Gefahr sie für die anderen zu missbrauchen oder schädigend zu ändern
- Wiederverwendbarkeit von Code wird hierdurch wiederum erhöht
- Das System kann sehr feingranularer und damit präziser beschrieben werden
- Prakmatische Bezeichner Helfen das System deklarativer zu gestallten
- Code-Kommentare werden zunehmend weniger (nicht überflüssig) da die längeren Namen für Funktionen, Klassen und ihren Entitäten länger und damit ausdrucksstärker werden
Nachteile:
- Lange Bezeichner
- größerer Verwaltungsaufwand
Hanselminutes 145 öffnen