Cuando pienso en el desarrollo ágil de software y todos los principios (SRP, OCP, ...) me pregunto cómo tratar el registro.
¿El registro junto a una implementación es una violación de SRP?
Yo diría yes
que la implementación también debería poder ejecutarse sin iniciar sesión. Entonces, ¿cómo puedo implementar el registro de una mejor manera? Revisé algunos patrones y llegué a la conclusión de que la mejor manera de no violar los principios de una manera definida por el usuario, sino usar cualquier patrón que se sepa que viola un principio es usar un patrón decorador.
Digamos que tenemos un montón de componentes completamente sin violación de SRP y luego queremos agregar el registro.
- componente A
- el componente B usa A
Queremos iniciar sesión para A, por lo que creamos otro componente D decorado con A, ambos implementando una interfaz I.
- interfaz I
- componente L (componente de registro del sistema)
- el componente A implementa I
- el componente D implementa I, decora / usa A, usa L para iniciar sesión
- el componente B usa una I
Ventajas: - Puedo usar A sin iniciar sesión - probar A significa que no necesito ningún simulacro de registro - las pruebas son más simples
Desventaja: - más componentes y más pruebas
Sé que esta parece ser otra pregunta de discusión abierta, pero en realidad quiero saber si alguien usa mejores estrategias de registro que un decorador o una violación de SRP. ¿Qué pasa con el registrador estático singleton que son NullLogger predeterminados y si se desea el registro de syslog, uno cambia el objeto de implementación en tiempo de ejecución?