S = Prinzip der Einzelverantwortung
Ich würde also eine gut organisierte Ordner- / Dateistruktur und Objekthierarchie erwarten. Jede Klasse / Funktion sollte so benannt werden, dass ihre Funktionalität sehr offensichtlich ist, und sie sollte nur Logik enthalten, um diese Aufgabe auszuführen.
Wenn Sie riesige Managerklassen mit Tausenden von Codezeilen sehen würden, wäre dies ein Zeichen dafür, dass eine einzelne Verantwortung nicht befolgt wird.
O = offenes / geschlossenes Prinzip
Dies ist im Grunde die Idee, dass neue Funktionen durch neue Klassen hinzugefügt werden sollten, die nur minimale Auswirkungen auf vorhandene Funktionen haben oder deren Änderung erforderlich ist.
Ich würde erwarten, dass Objektvererbung, Untertypisierung, Schnittstellen und abstrakte Klassen in großem Umfang zum Einsatz kommen, um das Design eines Teils der Funktionalität von der tatsächlichen Implementierung zu trennen und anderen zu ermöglichen, nebenbei andere Versionen zu implementieren, ohne die zu beeinträchtigen Original.
L = Liskov-Substitutionsprinzip
Dies hat mit der Möglichkeit zu tun, Untertypen als übergeordnete Typen zu behandeln. Dies ist in C # ein Kinderspiel, wenn Sie eine ordnungsgemäße Hierarchie geerbter Objekte implementieren.
Ich würde erwarten, dass Code allgemeine Objekte als Basistyp behandelt und Methoden für die Basis- / Abstraktionsklassen aufruft, anstatt die Untertypen selbst zu instanziieren und zu bearbeiten.
I = Prinzip der Grenzflächentrennung
Dies ist ähnlich wie bei SRP. Grundsätzlich definieren Sie kleinere Teilmengen von Funktionalität als Schnittstellen und mit denen arbeiten , um Ihr System zu halten entkoppelt (zB FileManager
könnten die einzelnen responsibilty Umgang mit Datei - I / O, aber das könnte ein implementieren IFileReader
und IFileWriter
die enthaltenen spezifischen Methodendefinitionen für das Lesen und Schreiben von Dateien).
D = Abhängigkeitsumkehrprinzip.
Auch hier geht es darum, ein System entkoppelt zu halten. Vielleicht möchten Sie eine .NET Dependency Injection-Bibliothek verwenden, die in der Lösung wie Unity
oder Ninject
oder in einem ServiceLocator-System wie verwendet wird AutoFacServiceLocator
.