Skip to content

clase BallSpeedAttributes #16

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

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

clase BallSpeedAttributes #16

wants to merge 3 commits into from

Conversation

mamomeri
Copy link

Problema Identificado:
En el archivo Ball.java, se observa que los atributos de velocidad (speed), retardo para aceleración (speedUpDelay), y retardo actual (delay) se manejan como valores primitivos directos. Esto puede conducir a falta de abstracción, validación inconsistente y dificultad en la comprensión de su significado y relación con la lógica de la pelota.
Solución:
La solución consiste en aplicar la refactorización "Replace Data Value with Object". Crearemos una clase llamada BallSpeedAttributes que encapsule estos atributos y proporcione métodos para gestionar su validación y manipulación. Luego, usaremos una instancia de esta clase en la clase Ball para manejar los atributos de velocidad.
Beneficios:
-Abstracción Mejorada: La clase BallSpeedAttributes proporciona una abstracción más clara y comprensible para los atributos de velocidad y retardo.
-Validación Controlada: La encapsulación en la clase BallSpeedAttributes permite una validación coherente y controlada de los valores de velocidad y retardo.
-Facilita el Mantenimiento: Centralizar la lógica relacionada con los atributos de velocidad mejora la mantenibilidad al evitar la duplicación de código y simplificar futuras modificaciones.
-Legibilidad Mejorada: El uso de BallSpeedAttributes hace que el código de la clase Ball sea más legible y se centre en la lógica principal de la pelota.
-Posibilidad de Extensión: La refactorización proporciona una base sólida para futuras extensiones y funcionalidades relacionadas con la velocidad de la pelota.
-Reducción de Errores: La validación consistente en BallSpeedAttributes ayuda a prevenir errores al introducir valores incorrectos en los atributos de velocidad y retardo.

@mamomeri
Copy link
Author

CodeSmell : Message Chains
Repositorio : https://github.com/Glank/Java-Games/blob/master/Pong
Problema Identificado:
En la clase PongEnvironment, se presentan cadenas de llamadas directas a métodos de la clase Ball , lo que crea una dependencia y acoplamiento innecesarios entre las clases. Esto dificulta la mantenibilidad y flexibilidad del código.

Solución:

Aplicamos la refactorización "Ocultar Delegado" (Hide Delegate) en la clase Ball introduciendo métodos de acceso getX() y getY() para obtener las coordenadas de la pelota. Luego, en la clase PongEnvironment, utilizamos estos métodos de acceso en lugar de las cadenas de llamadas directas.

@mamomeri
Copy link
Author

CodeSmell #9: Magic Number
Repositorio #4: https://github.com/Glank/Java-Games/blob/master/FallDown
Problema Identificado:
En el repositorio, se encuentran varios ejemplos de "magic numbers" en la clase FallDownEngine, lo que dificulta la comprensión y el mantenimiento del código a largo plazo.

Solución:
Para abordar el problema de los "magic numbers", se puede seguir el enfoque de reemplazar estos números literales por constantes con nombres descriptivos que indiquen su significado y propósito en el contexto del programa.

Beneficios:
-Mejora la legibilidad del código al proporcionar nombres descriptivos para los valores constantes.
-Facilita el mantenimiento y la modificación del código, ya que el propósito de los valores es más claro.
-Ayuda a prevenir errores causados por modificar incorrectamente los valores en diferentes partes del código.

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

Successfully merging this pull request may close these issues.

1 participant