CLEAN CODE
1. Identificación y Resolución de Malas Prácticas
Categoría de Clase y Problema Detectado Solución Aplicada
código limpió Línea
1. [Link]: 12 Uso de nombres Renombrado a 'libro' y 'socio'
Nomenclatura cortos (l, s) sin para que el código sea
[Link]: 8
significado claro. autoexplicativo.
2. [Link]: 4, Atributos de clase Cambio a 'private' con Getters
Encapsulación 5, 6 declarados como para proteger el estado de los
públicos. objetos.
3. [Link] La clase Biblioteca Traslado del método
Responsabilida a: 35 asume lógica de calcularMulta() a la clase
d cálculo de multas. Préstamo.
4. Duplicidad [Link]: 20 Lógica de cálculo de Centralización de la lógica en
fechas repetida en la clase Préstamo.
[Link]:
ficheros distintos.
32
5. Legibilidad [Link]: Estructuras if-else Uso de cláusulas de guarda
15 anidadas que para un flujo de ejecución
dificultan la lectura. lineal.
6. Números [Link] Valores literales (1.5, Creación de constantes
mágicos a: 45 15) insertados en la MULTA_DIARIA y
lógica. DIAS_LIMITE.
7. Calidad Todo el Comentarios que no Eliminación de ruido visual
comentarios proyecto aportan valor o para dejar solo código limpio.
explican lo obvio.
8. Formato Global Inconsistencia en Aplicación de formato
estilos de nombrado. estándar Java para mejorar el
Categoría de Clase y Problema Detectado Solución Aplicada
código limpió Línea
orden visual.
2. Código Refactorizado
[Link]
package ejercicio;
public class Libro {
private String isbn;
private String titulo;
private String autor;
public Libro(String isbn, String titulo, String autor) {
[Link] = isbn;
[Link] = titulo;
[Link] = autor;
}
public String getIsbn() { return isbn; }
public String getTitulo() { return titulo; }
public String getAutor() { return autor; }
}
[Link]
package ejercicio;
public class Socio {
private String id;
private String nombre;
public Socio(String id, String nombre) {
[Link] = id;
[Link] = nombre;
}
public boolean puedePedirPrestamo(int totalPrestamos) {
if (totalPrestamos >= 5) return false;
return true;
}
}
[Link]
package ejercicio;
import [Link];
import [Link];
public class Prestamo {
private static final double MULTA_DIARIA = 1.5;
private static final int DIAS_MAXIMOS = 15;
private Libro libro;
private Socio socio;
private LocalDate fechaPrestamo;
public Prestamo(Libro libro, Socio socio) {
[Link] = libro;
[Link] = socio;
[Link] = [Link]();
}
public double calcularMulta() {
long dias = [Link]([Link],
[Link]());
if (dias <= DIAS_MAXIMOS) return 0.0;
return (dias - DIAS_MAXIMOS) * MULTA_DIARIA;
}
}
[Link]
package ejercicio;
import [Link].*;
public class Biblioteca {
private List<Prestamo> prestamos = new ArrayList<>();
public void realizarPrestamo(Libro l, Socio s) {
if ([Link]([Link]())) {
[Link](new Prestamo(l, s));
}
}
}