
Principio de Responsabilidad Única (SRP)
El Single Responsibility Principle (SRP) es el primero de los cinco principios SOLID de diseño orientado a objetos. Establece que una clase debe tener una, y solo una, razón para cambiar.
Ejemplo que viola el SRP
class Usuario {
constructor(nombre, email) {
this.nombre = nombre;
this.email = email;
}
guardarEnDB() {
// Lógica para guardar en base de datos
}
enviarEmailBienvenida() {
// Lógica para enviar email
}
generarReporteActividad() {
// Lógica para generar reporte
}
}
Esta clase tiene múltiples responsabilidades: gestión de datos, persistencia, comunicación y generación de reportes.
Ejemplo que cumple con SRP
class Usuario {
constructor(nombre, email) {
this.nombre = nombre;
this.email = email;
}
}
class UsuarioDB {
guardar(usuario) {
// Lógica para guardar en base de datos
}
}
class EmailService {
enviarBienvenida(usuario) {
// Lógica para enviar email
}
}
class ReporteService {
generarActividad(usuario) {
// Lógica para generar reporte
}
}
Cada clase tiene ahora una única responsabilidad bien definida.
Beneficios de aplicar SRP
- Mantenibilidad: Cambios afectan solo a una clase específica
- Legibilidad: El código es más fácil de entender
- Testabilidad: Más fácil de probar con tests unitarios
- Reusabilidad: Clases pueden ser reutilizadas en otros contextos
- Menos errores: Cambios tienen menos efectos secundarios
¿Cómo identificar violaciones de SRP?
Algunas señales de que una clase tiene demasiadas responsabilidades:
- Tiene muchos métodos que no están relacionados entre sí
- Requiere frecuentes modificaciones por diferentes razones
- Es difícil de nombrar (usando "y", "o", "Manager")
- Tiene muchas dependencias externas
- Es difícil de testear porque hace demasiadas cosas
Recuerda: "Una clase debe tener una sola razón para cambiar". Este simple principio puede mejorar significativamente la calidad de tu código.