Asunto: Tarea4 - Code Smell Nota: Es parte de un deber, siéntete libre de ignorar.
CodeSmell #5: Feature Envy
Justificación de Problema: La clase jugador tiene los métodos de determinarDirección, evaluarVelocidadX, evaluarVelocidadY solo usa métodos de la clase GestorControles y no métodos propios en estos. Por lo que los métodos en cuestión están “envidiando” ciertas funcionalidades de otro objeto. Además, tener estos métodos dentro de la clase jugador hace que el código en esta sea más extenso. Esto nos sugiere que los métodos deberían ser parte de la clase GestorControles.
Solución: Mover dichos métodos a GestorControles en donde tenga mas sentido su uso sin que Jugador tenga que “envidiar” la funcionalidad de otra clase. También se agrega una llamada al método determinarDirección dentro de la clase jugador para poderlo usar.
Nota: Esto es un ejemplo de como organizarlo.


Beneficios de Refactorizar: Se mejora la cohesión de ambas clases al tener una responsabilidad especifica y solo hacer uso de llamadas a métodos. Hace más sencillo modificar una clase sin afectar a otra. Mejora la legibilidad del código y disminuye la cantidad de líneas de código dentro de las clases lo que hace más sencillo la corrección de errores.
Asunto: Tarea4 - Code Smell Nota: Es parte de un deber, siéntete libre de ignorar.
CodeSmell #5: Feature Envy
Justificación de Problema: La clase jugador tiene los métodos de determinarDirección, evaluarVelocidadX, evaluarVelocidadY solo usa métodos de la clase GestorControles y no métodos propios en estos. Por lo que los métodos en cuestión están “envidiando” ciertas funcionalidades de otro objeto. Además, tener estos métodos dentro de la clase jugador hace que el código en esta sea más extenso. Esto nos sugiere que los métodos deberían ser parte de la clase GestorControles.
Solución: Mover dichos métodos a GestorControles en donde tenga mas sentido su uso sin que Jugador tenga que “envidiar” la funcionalidad de otra clase. También se agrega una llamada al método determinarDirección dentro de la clase jugador para poderlo usar.
Nota: Esto es un ejemplo de como organizarlo.
Beneficios de Refactorizar: Se mejora la cohesión de ambas clases al tener una responsabilidad especifica y solo hacer uso de llamadas a métodos. Hace más sencillo modificar una clase sin afectar a otra. Mejora la legibilidad del código y disminuye la cantidad de líneas de código dentro de las clases lo que hace más sencillo la corrección de errores.