Codigo limpio y refactorización

El Principio de Responsabilidad Única (SRP) establece que una clase, función o módulo debe tener una única razón para cambiar. Esto significa que cada componente debe encargarse de una única tarea o responsabilidad específica.

  • ¿Por qué es importante?
    Si un componente tiene múltiples responsabilidades, los cambios en una parte podrían afectar a las demás, lo que dificulta el mantenimiento y aumenta las posibilidades de errores.

Ejemplo 1: Una Clase con Múltiples Responsabilidades

Código Malo (Violación del SRP)

Problema: La clase Usuario tiene múltiples responsabilidades: manejar la información del usuario, interactuar con la base de datos y enviar correos electrónicos. Esto viola el SRP porque cambios en la lógica de la base de datos o el correo afectarían a esta clase.

1public class Usuario {
2    private String nombre;
3
4    public Usuario(String nombre) {
5        this.nombre = nombre;
6    }
7
8    public void guardarEnBaseDeDatos() {
9        // Código para guardar el usuario en la base de datos
10        System.out.println("Guardando usuario en la base de datos...");
11    }
12
13    public void enviarCorreoBienvenida() {
14        // Código para enviar un correo de bienvenida
15        System.out.println("Enviando correo de bienvenida...");
16    }
17}

Código Bueno (Aplicando SRP)

Solución: Dividimos las responsabilidades en diferentes clases:

  • Usuario solo contiene la información del usuario.
  • UsuarioRepositorio maneja la interacción con la base de datos.
  • UsuarioNotificador se encarga del envío de correos. Ahora cada clase tiene una única responsabilidad.
1public class Usuario {
2    private String nombre;
3
4    public Usuario(String nombre) {
5        this.nombre = nombre;
6    }
7
8    public String getNombre() {
9        return nombre;
10    }
11}
12
13public class UsuarioRepositorio {
14    public void guardar(Usuario usuario) {
15        System.out.println("Guardando usuario en la base de datos...");
16    }
17}
18
19public class UsuarioNotificador {
20    public void enviarCorreoBienvenida(Usuario usuario) {
21        System.out.println("Enviando correo de bienvenida...");
22    }
23}

Beneficios de Aplicar el SRP

  1. Facilidad de mantenimiento: Cambios en una parte del sistema no afectan a otras.
  2. Mayor claridad: Las clases y funciones tienen propósitos claros.
  3. Escalabilidad: Es más fácil agregar nuevas funcionalidades sin introducir errores.

El SRP es uno de los principios más importantes del desarrollo de software limpio. Siguiendo este enfoque, tu código será más modular, entendible y robusto. 😊

  • Loading...