Coder Social home page Coder Social logo

poo's People

Contributors

cmenesess avatar

Watchers

 avatar

poo's Issues

Feature envy

En la clase materia el método escritor, casi no utiliza las variables de la clase materia, sino que utiliza solamente las variables de la clase pregunta. Por lo que se generaría un feature envy. Esto además generaría una baja cohesión entre la clase al no utilizar sus propios atributos de materia.
Screen Shot 2020-08-25 at 12 50 26

Beneficio
• Al hacer refactorización vamos a reducir el acoplamiento entre clases y elevaremos la cohesión dentro de la misma.
• Mejor organización del código (Los métodos para manejar el data van a estar alado de donde se encuentra la información)

Message chain

Clase: Materia
Code Smell: Message Chains
• Problema presente

Este code smell implica una dependencia en la navegación a lo largo de la estructura de la clase.
Cualquier cambio en esas relaciones requiere una modificación en el cliente.
• Beneficios de Refactorizar
Reduce las dependencias a entre clases de la cadena.
Reduce la cantidad de código acoplado.
Esconde la delegación entre métodos al cliente.
Sección B

image
Sección C
Técnica de Refactorización usada: Hide Delegate
Esta técnica ayudara a esconder la implementación del cliente y será mas fácil de modificar si se hace algún cambio en algún método o clase dependiente.

image

Data Class

Problema: La clase Estudiante.java instancia objetos que no tienen funcionalidad alguna más que acceso a sus datos para que sean usados por el sistema lo cual no aporta en gran medida y se tratan a los objetos de tipo Estudiante como conjuntos de datos.
Beneficios de Refactorizar: En teoría mejora la comprensión del código a futuro en caso de que el sistema llegue a escalar, se recopilarían todas las operaciones sobre estos objetos en un mismo lugar en lugar, en lugar de que estén dispersas por todo el código.

Long Method

Al rebasar las 10 líneas de código para un método y este método Opcion1 al contar con 40 líneas daría como resultado el smelll code Long method. Este al ser demasiado largo va a ser difícil y cansado de entenderlo.
Screen Shot 2020-08-25 at 12 52 24
Beneficio
• El metodo va a ser mas entendible para el momento de que se desee hacer depuracion del codigo o algun cambio.
• Es mucho mejor utilizar metodos pequeños y con un buen nombre a que tener un metodo largo que sea cansado de leer.

Mejora en el codigo - Introduce Parameter Object

image
En la imagen se observa como el constructor presenta un conjunto de variables relacionadas y como esto representa un problema al momento de querer añadir una nueva por lo que una posible solucion seria juntar todas estas variables en una clase para que el codigo quede asi:
image
Tal como se aprecia, con las variables agrupadas en una clase el codigo se vuelve mas legible y sobretodo no se ve afectado en caso de bien quitar una variable o agregar una nueva, para el constructor esto es transparente ya que la clase Opcion se encarga de ello.

Mejora en el codigo - Replace Inheritance with Delegation

image
En esta captura se observa como la clase CoolStack extiende de una clase con metodos que nunca va a usar incumpliendo el principio Liskov Substitution, una posible mejora seria:
image
Con la solución aplicada se evita que la clase CoolStack implemente métodos que no le sirven y los que si requiera simplemente puede invocarlos a través del objeto creado.

Un posible code smell Long Class

Buenas, en la clase MenuPrincipal se pudo observar un posible code smell Long class esto se debe a que se excedia mas de las 50 lineas para no considerar a alago long class pero en este caso utilizaba 864 lineas de codigo.Se puede observar que el MenuPrincipal tiene demasiadas responsabilidad, lo cual seria la principal razon de porque hay demasiadas lineas de codigo.
image
Beneficios de refactorizar:
Va a ser mas facil hacer un chequeo,mantenimiento o depuracion del codigo.Tambien se podran eliminar duplicacioon de codig y funcionalidad en caso de que existan.

Mejora en el codigo - Rename Method

image
Como se aprecia en la captura presentada, encontramos un code smell (comment) el cual representa un problema ya que el usuario que lo vea no va a entender la funcionalidad solo con el nombre del metodo, dicho esto presento una posible mejora:
image
Con esto el usuario entendera completamente la funcionalidad sin la necesidad de acceder a la clase para entender el metodo.

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.