Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Code Smells #4

Open
TingoCarlos08 opened this issue Jan 18, 2024 · 0 comments
Open

Code Smells #4

TingoCarlos08 opened this issue Jan 18, 2024 · 0 comments

Comments

@TingoCarlos08
Copy link
Collaborator

Code Smells:

Large Class: Clase Partido

Justificación: La clase Jugador contiene múltiples atributos y métodos, y su funcionalidad podría dividirse en clases más pequeñas y especializadas. Esto viola el principio de responsabilidad única y podría hacer que la clase sea difícil de entender y mantener.

Beneficios de Refactorizar: Dividir la funcionalidad de la clase Jugador en clases más pequeñas y centradas en tareas específicas haría que el código sea más modular y fácil de entender. Cada clase tendría una responsabilidad clara y sería más fácil de mantener y extender.

Código Refactorizado:

Primitive Obsession: Clase Partido

Justificación: Algunos atributos, como year, dateTime, halfTimeHomeGoals y halfTimeAwayGoals en la clase Partido, podrían beneficiarse de una representación más semántica mediante la creación de nuevas clases específicas.

Beneficios de Refactorizar: Crear clases dedicadas para representar conceptos como fechas y horas haría que el código sea más expresivo y menos propenso a errores. La encapsulación de la lógica relacionada en clases separadas facilitaría la extensión y el mantenimiento del código.

Código Refactorizado:

  1. Simplifying Method Calls: Remove Parameter

Problema: En el método Jugador constructor, se utiliza un número significativo de parámetros. Esto puede llevar a una interfaz poco amigable y a posibles errores si no se manejan correctamente.

Beneficios de Refactorizar: Al aplicar la técnica "Remove Parameter", podríamos reducir la complejidad del constructor eliminando algunos parámetros y, si es posible, moviéndolos a un método separado. Esto hará que el constructor sea más limpio y fácil de entender, mejorando la legibilidad del código. Además, reduce la posibilidad de errores al simplificar la interfaz del constructor.

  1. Organizing Data: Self Encapsulate Field

Problema: En la clase Jugador, los atributos son accesibles directamente, lo que puede provocar un acoplamiento innecesario y dificultar el control sobre los valores de los atributos.

Beneficios de Refactorizar: Al aplicar la técnica "Self Encapsulate Field", encapsulamos los atributos, proporcionando métodos de acceso en lugar de acceder directamente a ellos. Esto mejora la encapsulación, permitiendo un mejor control sobre cómo se accede y modifica la información en la clase. Además, facilita futuras actualizaciones y cambios en la implementación de la clase sin afectar directamente a su interfaz pública.

Pruebas Unitarias:

Clase Jugador

Captura de pantalla (2133)
Captura de pantalla (2134)
Captura de pantalla (2135)

Clase Partidos

Captura de pantalla (2133)
Captura de pantalla (2133)
Captura de pantalla (2135)

Clase CopaMundial
Captura de pantalla (2141)
Captura de pantalla (2142)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant