El principio de responsabilidad única (SRP) es un principio de diseño de software que establece que un módulo o clase de software debe tener una, y sólo una, razón para cambiar. Este principio pretende hacer que el software sea más mantenible asegurando que un módulo o clase de software tenga una única y bien definida responsabilidad.
El principio de responsabilidad única es uno de los principios de SOLID, un acrónimo mnemotécnico para cinco principios de diseño destinados a hacer el software más comprensible, mantenible y flexible. Los otros principios de SOLID son el Principio de Apertura/Cierre, el Principio de Sustitución de Liskov, el Principio de Segregación de Interfaces y el Principio de Inversión de Dependencias.
¿Debe haber una sola razón para cambiar?
No debería haber una sola razón para cambiar: puede haber múltiples razones para un cambio, y cada razón puede justificar su propio cambio. Por ejemplo, si un requisito cambia, eso puede justificar un cambio en el código; si el código cambia, eso puede justificar un cambio en las pruebas; si el entorno cambia, eso puede justificar un cambio en el proceso de despliegue. Los microservicios pueden seguir el principio de una sola responsabilidad. Los microservicios pueden seguir el principio de una sola responsabilidad. De hecho, este es uno de los principales beneficios de utilizar una arquitectura de microservicios. Al dividir una aplicación monolítica en servicios más pequeños e independientes, cada servicio puede ser responsable de una sola tarea o funcionalidad. Esto hace que el sistema global sea más modular y más fácil de mantener.
¿Qué rompe el Principio de Sustitución de Liskov?
Hay varias maneras de romper el Principio de Sustitución de Liskov (LSP). Una forma es cuando un subtipo viola el contrato de un supertipo. Por ejemplo, si un supertipo requiere que se implemente un determinado método, y un subtipo no implementa ese método, entonces el LSP se rompe.
Otra forma de romper el LSP es cuando un subtipo cambia el significado de un método del supertipo de una manera que no es compatible con el contrato del supertipo. Por ejemplo, si el método de un supertipo se supone que devuelve un cierto tipo de objeto, pero la implementación de un subtipo de ese método devuelve un tipo de objeto diferente, entonces el LSP se viola de nuevo.
Una tercera forma de violar la LSP es cuando un subtipo introduce nuevos métodos que no están presentes en el supertipo. Esto puede suceder, por ejemplo, cuando un subtipo introduce nuevos métodos que no están presentes en el supertipo, pero que son requeridos por el contrato del supertipo.
Por último, la LSP también puede ser violada cuando un subtipo redefine el significado de un método del supertipo de una manera que no es compatible con el contrato del supertipo. Por ejemplo, si el método de un supertipo se supone que devuelve un cierto tipo de objeto, pero la implementación de un subtipo de ese método devuelve un tipo de objeto diferente, entonces el LSP se viola de nuevo.
¿Qué es el Principio de Responsabilidad Única en agile?
El principio de responsabilidad única (SRP) es un principio fundamental del desarrollo ágil de software. Establece que un módulo de software debe tener una y sólo una razón para cambiar. Este principio ayuda a que el software sea más mantenible y escalable al asegurar que cada módulo tiene un propósito bien definido.
El SRP está estrechamente relacionado con el concepto de "cohesión", que es una medida de la fuerza de la relación entre los elementos de un módulo de software. Se dice que un módulo tiene una alta cohesión si los elementos que lo componen están fuertemente relacionados entre sí. Por el contrario, un módulo con baja cohesión suele contener elementos poco relacionados entre sí.
Los módulos de alta cohesión suelen ser más fáciles de mantener y comprender que los de baja cohesión. Esto se debe a que un cambio en un módulo de alta cohesión es probable que afecte sólo a un pequeño número de otros elementos, mientras que un cambio en un módulo de baja cohesión es probable que afecte a un mayor número de elementos.
El SRP es sólo uno de los principios del desarrollo ágil de software. Otros principios importantes son el principio DRY (Don't Repeat Yourself), el principio KISS (Keep It Simple, Stupid) y el principio YAGNI (You Ain't Gonna Need It).