Katas intermedias de refactorización

Nuestra recomendación es que primero revises las katas de Programación Orientada a Objetos (OOP) y luego avances a conceptos más complejos de testing. Una vez que hayas profundizado en estos conceptos, comienza con la aplicación de las técnicas de refactorización que te presentamos a continuación. 

Vas a encontrar un listado de katas con un cierto nivel de dificultad y un link en cada una de ellas que te va a llevar a una explicación detallada y el ejercicio resuelto.

En cada link de cada kata encontrarás una introducción como contexto y seguidamente los detalles que necesitas para poder ejecutarla. Y recuerda: la mejor forma de aprender es practicando. ¿Empezamos? 

Tennis Kata: Imagina que estás haciendo una Code review y debes identificar los code smells y cuales serían sus correctas abstracciones. Revisa una introducción y explicación a la Tennis kata de la propia voz de su autora.
Iteración 1: Nivel 1.
Iteración 2: Nivel 2. Abstrae los conceptos en objetos que encapsulen la lógica de la kata.
Iteración 3: Nivel 3. Revierte los cambios cuando un test falle

Import-User-Kata 
Iteración 1: Crea un setup para poder hacer test de tú kata, identifica los code smells, y crea un test [Golden master] El objetivo es el setup, no resolver la kata.
Iteración 2: Con los test anteriormente creados resuelve la kata.

Gilded Rose: Trabajar con código legacy.
Iteración 1: No tienes que hacer los test, utiliza los que ya tiene la kata por defecto.
Iteración 2: Aplicación de object calisthenic.
Iteración 3: Empezar a trabajar en Tests de Caracterización.
Iteración 4: Aplica cambios en paralelo.

Beverages Prices Kata: Refactoriza una kata con una herencia dolorosa
Iteration 1: Utiliza parallel changes.

Parrot Refactoring Kata
Iteración 1: Identifica el codesmell e intenta resolverlos.
Iteración 2: Refactorización con Object calisthenic.

Smelly Mars Rover: Kata diseñada para que refactoricemos los code smell que vamos viendo pudiendo aplicar Parallel changes:
Iteración 1: Identifica los smells y refactoriza en orden de importancia según tu punto de vista.
Iteración 2: Aplicación de object calisthenic
Iteración 3: Utiliza parallel changes. Utiliza la Herencia para mover la lógica hacia donde te lleva el código (el código te habla).

Al terminar mira como otros han resuelto este kata y finalmente aplica los cambios tu mismo (no siguiendo el vídeo, eso seria hacer trampa y engañarte a ti mismo).

Smelly Tic Tac Toe: Kata de refuerzo si se quiere trabajar sobre un dominio conocido.

Parallel Change Kata: Aprende como realizar refactors sin romper ningún test o error de compilación

BugZero Kata: Soluciona todos los bugs y cúbrelos con tests.

Racing Car Katas:  Kata para trabajar SOLID. La idea es aprender qué principio SOLID no se está cumpliendo y cómo resolverlo.
Iteración 1: TirePressureMonitoringSystem exercise
Iteración 2: UnicodeFileToHtmlTextConverter exercise
Iteración 3: TicketDispenser exercise
Iteración 4: TelemetrySystem exercise
Iteración 5: Leaderboard exercise

TripService: Trabaja en ramas superficiales (cubre el código de prueba y luego refactoriza los cambios).
Aplica la técnica de costuras.
Trabaja con código legado añadiendo primero la cobertura con test que resuelvan poco a poco los casos de uso que vas entendiendo.
Comprende porqué el Singleton puede hacer mucho daño a tú testabilidad.

Refactoring Kata Lift Pass Pricing
Iteracion 1: Cubre todo de tests, utilizando tests de caracterización y prepara tu estrategia de testing de manera consciente y trabajando en la pirámide de test.
Iteracion 2: Evoluciona la arquitectura de la aplicación a una arquitectura hexagonal.

Consejos:

  • Identifica las distintas taxonomías de code smells.
  • Siéntete cómodo con el cambio </aside>

Aprendizajes:

  • Identifica los tipos de smells.
  • Cuales son los refactors más comunes.
  • Hacer cambios en paralelos.
  • Técnicas de trabajo con legacy code.
  • Tests de caracterización.
  • Costuras.
  • Preparar entorno para poder trabajar con código legado.
  • Uso de la cobertura.
  • Sentirte cómodo con código legado.
  • Parallel changes.

 

New call-to-action