0% encontró este documento útil (0 votos)
5 vistas4 páginas

Tarea Clean Code

El documento aborda la identificación y resolución de malas prácticas en el código, proponiendo soluciones como la mejora de la nomenclatura, encapsulación de atributos, y la centralización de lógica. Se presenta un código refactorizado que incluye clases como Libro, Socio, Prestamo y Biblioteca, con un enfoque en la legibilidad y el uso de constantes. Se destacan cambios que eliminan duplicidades y mejoran la calidad general del código.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas4 páginas

Tarea Clean Code

El documento aborda la identificación y resolución de malas prácticas en el código, proponiendo soluciones como la mejora de la nomenclatura, encapsulación de atributos, y la centralización de lógica. Se presenta un código refactorizado que incluye clases como Libro, Socio, Prestamo y Biblioteca, con un enfoque en la legibilidad y el uso de constantes. Se destacan cambios que eliminan duplicidades y mejoran la calidad general del código.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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));​
}​
}​
}​

También podría gustarte