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

Sugerencias #1

Open
stevenchoez opened this issue Aug 18, 2021 · 1 comment
Open

Sugerencias #1

stevenchoez opened this issue Aug 18, 2021 · 1 comment

Comments

@stevenchoez
Copy link

stevenchoez commented Aug 18, 2021

No description provided.

@stevenchoez
Copy link
Author

Hola, como parte de una tarea de mi universidad para la materia de Diseño de Software, junto a mi grupo seleccionamos tu repositorio y realizamos una búsqueda de los denominados Code Smells y deseamos hacerte algunas sugerencias para mejorar el código usando técnicas de refactorización, gracias.

Dead Code
image
Problema: La clase usuario no presenta atributos en el constructor por lo que ha quedado obsoleto.
Técnicas a usar: Add parameter
Beneficios: Con esta refactorización se tendría una mejor descripción del Usuario y se lograría que el constructor trabaje de mejor manera.

Switch statements
image
Problema: El siguiente método presenta un switch muy complejo.
Técnicas a usar: Replace Parameter with Explicit Methods
Beneficios: Mejora la legibilidad del código, al tener métodos individuales para cada parte de la validación hace que sea más fácil entender.
image

Primitive obssesion
image

Problema: El atributo DNI de la clase Usuario puede llegar a ser un objeto ya que este dato es bastante complejo y además presenta otros datos importantes como nacionalidad, nombre, etc., que por el momento están siendo ignorados.
Técnica a usar: Replace Data Value with Object
Beneficios: Al realizar este cambio se puede manejar de mejor manera el DNI ya que este en realidad presenta algunos atributos que actualmente no están siendo considerados.

Feature Envy
image

Problema: Este método que está ubicado en la clase Cuenta utiliza métodos de la clase Usuario dentro de sus métodos.
Técnica a usar: Move Method
Beneficios: Al mover el método a una clase que contenga la mayoría de los datos utilizados por el método hace la clase más coherente y disminuye la dependencia entre clases.
image

Lazy Class
image

Problema: Esta clase solo presenta este método el cual es usado 1 sola vez, y solo en caso de existir una excepción por lo demás queda olvidado.
Técnica a usar: Inline Class
Beneficios: Si eliminamos la clase y movemos su funcionalidad a otra estamos liberando memoria del computador y hace el código más eficiente.
image

Inappropiate intimacy

image

Problema: Este método se encuentra en la clase Usuario, el cual no debería ya que verificar su DNI no es responsabilidad del usuario sino del sistema.
Técnica a usar: Extract Class
Beneficios: Ayuda a mantener la adherencia del principio de responsabilidad única, el código será más obvio y comprensible además que más fiable y tolerante a los cambios.
image

Data Class
image
Problema: Esta clase solo presenta métodos getters y setters.
Técnica a usar: Encapsulate Field
Beneficios: Movemos los atributos a las clases donde las necesitamos y los encapsulamos con un acceso privado para que no todos tengan acceso a ellos.
image

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