Skip to content

Principio de Responsabilidad Única

El Principio de Responsabilidad Única es uno de los pilares de la programación orientada a objetos, enfocado en la simplicidad y eficiencia del diseño de clases. Según el SRP, cada clase debe enfocarse en una única tarea o responsabilidad, lo que implica que debería existir solo una razón para cambiarla. Este principio busca evitar que las clases se conviertan en conglomerados complejos y difíciles de mantener, alentando así un diseño más limpio y modular.

Una clase que cumple con el SRP se caracteriza por ser pequeña y estar claramente definida, concentrándose en un objetivo específico y siendo rica en comportamiento. Esto se alinea con el concepto de “Tell, don’t ask”, donde las clases activamente realizan sus tareas en lugar de exponer su estado para que otras entidades actúen sobre ellas. Por ejemplo, en lugar de tener un UserService genérico que maneje varias acciones para los usuarios, es preferible dividir estas responsabilidades en servicios más específicos como UpdateUserService, ActivateUserService, o DeactivateUserService. Este enfoque no solo mejora la claridad y la auto-descripción de las acciones, sino que también promueve una mayor cohesión y facilita la prueba y el mantenimiento del código.

Un indicativo de que una clase no sigue el SRP es que posea múltiples métodos públicos o un único método con múltiples parámetros y condicionales, lo que sugiere que está tratando de hacer demasiado. En contraste, las clases que se adhieren al SRP suelen tener una interfaz más sencilla y una única área de cambio.

Por otro lado, es crucial entender que los modelos deben ser agnósticos respecto a cómo se presenta la información al usuario. Por ejemplo, una entidad Usuario no debe formatear la fecha de nacimiento para su visualización; esa responsabilidad recae en los DTOs. Este enfoque evita el acoplamiento entre los modelos y sus consumidores y apoya la construcción de un código modular y fácilmente testeable.

En conclusión, aplicar el Principio de Responsabilidad Única conlleva beneficios significativos en términos de cohesión, robustez del código y facilidad para la composición de clases. Evita la duplicación de código y asegura que cada clase tenga un propósito claro y bien definido, lo cual es esencial para un desarrollo de software efectivo y sostenible.

Ejemplo sencillo

/** Example whitout SRP principle*/
class Report
{
public function __construct(private array $data)
{
}
public function generateReport() {
// Logic to generate the report
}
public function displayReport() {
// Logic to display the report
}
}

Para finalizar


Por qué no se entiende la S de SOLID: Principio de Responsabilidad Única

La S de los principios SOLID es el principio más conocido, pero uno de los más complicados de entender. ¡Hoy os contamos cómo sacarle todo el jugo!

#Video tutorial#CodelyTV#SOLID