Skip to content

[🧬 Duplicate Code Report 🔍] Código de acceso JavaBean manual duplicado en clases de modelo #118

@github-actions

Description

@github-actions

🔍 Código Duplicado: Accessors JavaBean manuales en modelos de dominio

Análisis del commit b16c75a

Responsable: @copilot

Resumen

Dos clases de modelo (Item y WeekendPlan) implementan manualmente getters y setters JavaBean con código boilerplate idéntico en estructura, cuando podrían usar Java Records o Lombok para eliminar estas ~33 líneas repetidas.

Detalles de la Duplicación

Patrón: Accessors JavaBean manuales repetidos

  • Severidad: Baja
  • Ocurrencias: 2 clases, ~12 métodos accessor similares
  • Ubicaciones:
    • src/main/java/com/example/demo/model/Item.java (líneas 25-47) — 3 getters + 3 setters
    • src/main/java/com/example/demo/model/WeekendPlan.java (líneas 19-37) — 5 getters
  • Ejemplo de código duplicado (mismo patrón en ambos archivos):
// Item.java
public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}

// WeekendPlan.java — mismo patrón estructural
public String getTitle() {
    return title;
}
// ... repetido para cada campo

Análisis de Impacto

  • Mantenibilidad: Añadir un campo nuevo requiere escribir getter y setter manualmente en cada clase.
  • Riesgo de bugs: Bajo en accessors simples, pero WeekendPlan podría ser inmutable (record) y actualmente no lo es de forma explícita.
  • Código hinchado: ~33 líneas de boilerplate que se pueden eliminar completamente.

Recomendaciones de Refactorización

  1. Convertir WeekendPlan a Java Record (recomendado, Java 16+)

    public record WeekendPlan(String title, String vibe, String budget, String socialBattery, String punchline) {}
    • Esfuerzo estimado: muy bajo (< 30 min)
    • Beneficios: inmutabilidad garantizada, equals/hashCode/toString gratuitos
  2. Añadir Lombok a Item.java

    `@Data`
    public class Item { ... }
    • Esfuerzo estimado: bajo (< 1 hora incluyendo dependencia en build.gradle)
    • Beneficios: elimina todos los getters/setters manuales

Checklist de Implementación

  • Revisar los hallazgos de duplicación
  • Convertir WeekendPlan a Java Record
  • Añadir Lombok o convertir Item a record mutable con Lombok @Data
  • Verificar compatibilidad con validación de Jakarta (@NotBlank, @Size)
  • Actualizar tests si se rompe alguna referencia

Metadatos del Análisis

  • Archivos analizados: 5 archivos fuente Java
  • Método de detección: Análisis semántico de código
  • Commit: b16c75a
  • Fecha de análisis: 2026-06-19

Generated by Duplicate Code Detector · sonnet46 968.5K ·

Add this agentic workflows to your repo

To install this agentic workflow, run

gh aw add githubnext/agentics/workflows/duplicate-code-detector.md@298f992955146a6731d380a9de808e17861708e5
  • expires on Jun 21, 2026, 1:28 PM UTC

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions