Skip to content

mariabaselli/tp3_refactoring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Objetos 2 - Intro Refactoring

Mejorando el diseño y la legibilidad sin modificar su funcionalidad.

Escribamos código que otro desarrollador pueda entender! Refactorizamos para:

  • Simplificar el Código
  • Remover Código Duplicado
  • Mejorar el Diseño
  • Transformar algo procedural en OO
  • Reducir acoplamiento
  • Mejorar Cohesión
  • Separar en capas
  • Hacerlo mas expresivo/legible (nombrar el código)
  • Remover código muerto

Todo esto puedo hacerse con seguridad únicamente si tengo buena covertura de tests.

Algunos links de interes:

Introducción

  • Extract Method: Dándole semántica a conjuntos de colaboraciones
  • Números mágicos: Dándole semántica a las constantes
  • Simplificando condicionales: Un único nivel de indentación. else no es necesario.
  • Parámetros
    • De entrada: Objetos Válidos.
    • De salida: No usamos más null. Optional o Listas vacias.
  • Collecting parameters: Filtrando colleciones polimórficas.

Refactors Automatizados (IntelliJ o Eclipse)

Ejercicios

Algunos ejercicios tienen tests y otros hay que escribirlos. En dos ejercicios propongo los pasos que deben ejecutar para refactorizar.

  • Ejercicio 1: Utilicemos polimorfismo y tell don't ask.
    • Antes de comenzar a refactorizar, escribamos tests.
  • Ejercicio 2, Pasos a realizar:
    • Movamos la lectura del archivo csv a otra clase.
    • Mejoremos el for utizando el foreach.
    • Transformemos el método estático en método de instancia (agreguemos constructor e inicialicemos ahi).
    • Removamos código duplicado del foreach, utilizando expresiones lambda o simplemente extraigan en un método.
    • Removamos las constantes duplicadas.
  • Ejercicio 3: Utilicemos polimorfismo y tell don't ask.
    • Escribamos tests. Hagamos lo mínimo para que nos permita testear. Por ejemplo, no usar sysout, retornar un String con el reporte. Esto nos permite asertar contra el valor de retorno.
    • Incorporemos la jerarquía de gastos para utilizar polimorfismo.
    • Apliquemos polimorfismo para eliminar el switch.
    • Apliquemos polimorfismo para eliminar preguntar por el tipo para el calculo del monto de comida.
    • Apliquemos polimorfismo para eliminar preguntar por el tipo para la marca de exceso.
  • Ejercicio 4: Removamos el uso de null.

El ejercicio 2 fue tomado de lamchau.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages