Katas intermedias de refactorización

Si en vez de leer prefieres escuchar, dale al play.

Katas intermedias de refactorización
5:28

Te recomendamos empezar con las katas de Programación Orientada a Objetos (OOP) antes de navegar por conceptos más avanzados de testing. Una vez que hayas dominado estos conceptos, puedes aplicar las técnicas de refactorización que presentamos a continuación. 

Encontrarás una lista de katas intermedias con enlaces a explicaciones detalladas y soluciones de ejercicios. Cada enlace proporciona una introducción que te pone en contexto, seguida de los detalles necesarios para ejecutar la kata correctamente. Y recuerda: la mejor forma de aprender es practicando. ¿Empezamos?

Lista de katas intermedias de refactorización

Tennis Kata

Imagina que estás haciendo una revisión de código donde debes identificar code smells y sus correctas abstracciones. Revisa la 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

Esta kata te ayudará a mejorar tus habilidades de refactorización trabajando con código existente y estableciendo una base sólida para tus tests.

  • Iteración 1: Crea un setup para poder hacer test de tu 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 creados en la iteración anterior, resuelve la kata.

Gilded Rose

Centrada en el trabajo con código legacy, esta kata se centra en mejorar y refactorizar sin romper la funcionalidad existente. 

  • Iteración 1: No necesitas crear tests, utiliza los que ya tiene la kata por defecto.
  • Iteración 2: Aplica Object Calisthenic para mejorar la estructura y calidad del código.
  • Iteración 3: Comienza a trabajar con Tests de Caracterización para entender y validar el comportamiento actual del código.
  • Iteración 4: Aplica cambios en paralelo para refactorizar y mejorar el código gradualmente sin introducir errores.

Beverages Prices Kata

Refactoriza una kata con una herencia dolorosa.

  • Iteration 1: Utiliza parallel changes para refactorizar el código y mejorar la estructura sin romperla funcionalidad existente.

Parrot Refactoring Kata

Esta kata te desafía a identificar y resolver code smells a medida que refactorizas el código del loro (parrot).

  • Iteración 1: Identifica el code smell e intenta resolverlos.
  • Iteración 2: Realiza la refactorización utilizando Object Calisthenic.

Smelly Mars Rover

Kata diseñada para refactorizar los code smell que encuentres, utilizando Parallel changes:

  • Iteración 1: Identifica los smells y refactoriza en orden de importancia según tu punto de vista.
  • Iteración 2: Aplica 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, observa cómo otros han resuelto esta kata y luego aplica tus propios cambios (evitando seguir vídeos, para no hacer trampa ni engañarte a ti mismo).

Smelly Tic Tac Toe

Kata de refuerzo si se quiere trabajar sobre un dominio conocido.

Parallel Change Kata

Aprende a realizar refactors sin romper ningún test ni causar errores de compilación.

BugZero Kata

Soluciona todos los bugs y cúbrelos con tests.

Racing Car Katas

Kata diseñada para aplicar los principios SOLID. Aprende a identificar qué principio SOLID no se está cumpliendo y cómo resolverlo a través de las siguientes iteraciones:

  • Iteración 1: Ejercicio de TirePressureMonitoringSystem.
  • Iteración 2: Ejercicio de UnicodeFileToHtmlTextConverter.
  • Iteración 3: Ejercicio de TicketDispenser.
  • Iteración 4: Ejercicio de TelemetrySystem.
  • Iteración 5: Ejercicio de Leaderboard.

TripService

Esta kata se centra en trabajar con ramas superficiales (cubriendo el código con pruebas y luego refactorizando los cambios) y aplicando la técnica de costuras. Trabaja específicamente con código heredado, comenzando por agregar cobertura con pruebas que aborden gradualmente los casos de uso que comprendas.

A lo largo de esta kata, entenderás los desafíos que el patrón Singleton puede introducir en la testabilidad de tu código.

Refactoring Kata Lift Pass Pricing

Explora técnicas de refactorización aplicadas al sistema de precios de pases de elevación.

  • Iteración 1: Cubre todo el código con tests de caracterización y establece una estrategia de testing efectiva.
  • Iteración 2: Evoluciona hacia una arquitectura hexagonal para mejorar la modularidad del sistema.

Consejos para refactorización

  • Identifica las distintas taxonomías de code smells.

  • Acepta y adalta el cambio.

Aprendizajes

  • Tipos comunes de code smells y cómo identificarlos. 

  • Prácticas habituales de refactorización. 

  • Realización de cambios en paralelo. 

  • Técnicas efectivas para trabajar con código legacy. 

  • Implementación de tests de caracterización. 

  • Uso de costuras para la integración de cambios. 

  • Preparación del entorno para el trabajo con código heredado. 

  • Importancia de la cobertura de código en el proceso de refactorización. 

  • Manejo efectivo de código legacy.

  • Parallel changes.


Te preguntas ¿cómo aplicar el Desarrollo Guiado por Pruebas (TDD) en tus proyectos de desarrollo? No pases por alto nuestra guía.

New call-to-action