Giter Club home page Giter Club logo

javaooplectures2020's People

Contributors

leecottrellptc avatar

Stargazers

 avatar

Watchers

 avatar  avatar

javaooplectures2020's Issues

Code smell: Switch Statement

En el método toString() de la clase Persona se encuentra una secuencia de condicionales para definir como se va a llamar a una persona dependiendo de sus géneros. Pienso que en esta parte podría ser beneficioso utilizar una estructura diferente, pues si en algún momento se requiere añadir nuevas funciones que dependan del género será beneficioso tener clases aparte que definan este comportamiento en lugar de manejarlo con Strings. A continuación adjunto propuestas para refactorizar esto usando la técnica replace type code with state/strategy.
image
image

Code Smell: Comments

En todo el proyecto existen comentarios redundantes que tratan de explicar el funcionamiento, motivos y detalles de una clase, método o parámetro. Al hacer eso se pierde cierta limpieza y sobre todo "clase" en el código y da la impresión que este no es lo suficientemente intuitivo para explicarse a si mismo. Lo mejor sería borrarlos y tratar de mejor el nombre de cada cosa con el fin de justificarse.

Code smell: Dead Code

Dentro del proyecto hay un paquete que contiene una clase completamente vacía a excepción de un método main. No estoy muy seguro de si este código tenía algún propósito que aún no se ha implementado o si simplemente es un error, de todas formas esto se debería corregir pues actualmente solo causa confusión y le quita legibilidad al código. Se recomienda en este caso que simplemente se borre la clase o por lo menos darle un propósito. Adjunto una imágen del error.
image

Code Smell: Large Class

En la clase que se ha definido para las pizzas en el paquete de pizzaGUI hay demasiados elementos, esa clase no debería ser tan grande. Pienso que si se mantiene la estructura actual será muy difícil de mantener y agregar nuevos aspectos a la clase de Pizza, los toppings que existen en este momento solo funcionan como flags, lo cual tampoco es correcto. En el caso de la manera en la que se maneja el precio, al depender del tamaño estos se deberían delegar a otra clase. Por estas razones se recomienta separar las clases usando extract interface y class, para que se obtenga el siguiente resultado.
image
image
image
image
image

Code Smell: Data Class

La clase pizza tiene todos sus atributos en default, esto no es una buena práctica sobre todo al considerar que ya se ha construído getters y setters para la mayoría de estos atributos. Es recomendable encapsular estos elementos, se está desaprovechando uno de los pilares de la programación orientada a objetos. Al tener estos elementos en privado se podrá mantener una mejor seguridad sobre los mismos. La solución a este problema es simple, se recomienda encapsular los campos de la clase.

Code Smell: Speculative Generality

Hay un atributo en la clase de Book que no cumple ninguna función fuera de tener un getter y un setter. Este atributo se pudo colocar pensando en las características de un libro o en una funcionalidad futura, sin embargo por ahora no hace nada, entonces sería beneficioso simplemente removerlo. Se debe usar remove parameter para eliminarlo de los pocos métodos que lo utilizan. Adjunto los cambios propuestos.

image

Code Smell: Primitive Obsession

Se usan bastantes tipos de parametros primitivos en el proyecto, por ejemplo la clase WriteFile tiene como parámetros fname, lname, username, password, los cuales son Strings y tranquilamente podrían pertenecer a una clase credencial con el motivo de usar objetos en la WriteFile. De esta manera se solucionan los problemas de desorganización y escalabilidad.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.