You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.