S = Principio de responsabilidad única
Por lo tanto, esperaría ver una carpeta bien organizada / estructura de archivos y jerarquía de objetos. Cada clase / pieza de funcionalidad debe nombrarse de manera que su funcionalidad sea muy obvia, y solo debe contener lógica para realizar esa tarea.
Si viera grandes clases de gerentes con miles de líneas de código, eso sería una señal de que no se estaba siguiendo la responsabilidad individual.
O = Principio abierto / cerrado
Esta es básicamente la idea de que se debe agregar nueva funcionalidad a través de nuevas clases que tengan un mínimo impacto en / requieran la modificación de la funcionalidad existente.
Esperaría ver mucho uso de la herencia de objetos, subtipos, interfaces y clases abstractas para separar el diseño de una funcionalidad de la implementación real, permitiendo que otros vengan e implementen otras versiones sin afectar el original.
L = principio de sustitución de Liskov
Esto tiene que ver con la capacidad de tratar los subtipos como su tipo principal. Esto sale de la caja en C # si está implementando una jerarquía de objetos heredados adecuada.
Esperaría ver código que trate objetos comunes como su tipo base y métodos de llamada en las clases base / abstracta en lugar de instanciar y trabajar en los subtipos.
I = Principio de segregación de interfaz
Esto es similar a SRP. Básicamente, se definen subconjuntos más pequeños de la funcionalidad como interfaces y trabajar con aquellos a mantener su sistema desacoplado (por ejemplo, una FileManager
podría tener el single A cargo de tratar con archivos de E / S, pero que podría poner en práctica una IFileReader
y IFileWriter
que contenía las definiciones de métodos específicos para la lectura y redacción de archivos).
D = Principio de inversión de dependencia.
Nuevamente, esto se relaciona con mantener un sistema desacoplado. Quizás serías en la búsqueda de la utilización de una biblioteca .NET Inyección de Dependencia, que se utilizó en la solución como Unity
o Ninject
o un sistema ServiceLocator como AutoFacServiceLocator
.