S = Principe de responsabilité unique
Donc, je m'attendrais à voir une structure de dossiers / fichiers et une hiérarchie d'objets bien organisée. Chaque classe / élément de fonctionnalité doit être nommé de manière à ce que sa fonctionnalité soit très évidente, et il ne doit contenir que la logique pour effectuer cette tâche.
Si vous voyiez d'énormes classes de gestionnaires avec des milliers de lignes de code, cela signifierait que la responsabilité unique n'est pas suivie.
O = principe ouvert / fermé
C’est essentiellement l’idée que de nouvelles fonctionnalités doivent être ajoutées via de nouvelles classes ayant un impact minimal sur les fonctionnalités existantes ou nécessitant une modification de ces fonctionnalités.
Je m'attendrais à voir beaucoup d'utilisation de l'héritage d'objet, du sous-typage, des interfaces et des classes abstraites pour séparer la conception d'une fonctionnalité de l'implémentation réelle, permettant ainsi à d'autres utilisateurs de venir et d'implémenter d'autres versions sans affecter les performances. original.
L = principe de substitution de Liskov
Cela concerne la possibilité de traiter les sous-types comme leur type parent. Cela sort de la boîte en C # si vous implémentez une hiérarchie d'objets héritée appropriée.
Je m'attendrais à voir le code traiter les objets communs comme leur type de base et appeler des méthodes sur les classes de base / abstraites plutôt que d'instancier et de travailler sur les sous-types eux-mêmes.
I = Principe de séparation des interfaces
Ceci est similaire à SRP. Fondamentalement, vous définissez des sous-ensembles de fonctionnalités plus petits en tant qu’interfaces et travaillez avec celles-ci pour que votre système reste découplé (par exemple, a FileManager
pourrait avoir la seule responsabilité de traiter les E / S sur fichier, mais cela pourrait implémenter un IFileReader
et IFileWriter
contenant les définitions de méthode spécifiques pour la lecture. et écriture de fichiers).
D = Principe d'inversion de dépendance.
Là encore, cela concerne le fait de garder un système découplé. Peut-être serez-vous à la recherche d’une bibliothèque .NET Dependency Injection utilisée dans la solution telle que Unity
ou Ninject
ou dans un système ServiceLocator tel que AutoFacServiceLocator
.