Mejora tu flujo de TDD con estos consejos
¿Has intentado adoptar la práctica del desarrollo guiado por tests pero sientes que es farragoso, tardas mucho en escribir los tests y otro tanto en hacerlos pasar? Tal vez estás intentando dar pasos demasiado grandes y tu diseño puede simplificarse un poco más.
Cuando practicas TDD tu objetivo principal debe ser:
👉 Acortar el feedback loop para darte cuenta lo antes posible si no estás yendo en la dirección correcta.
👉 Conseguir un diseño simple. Según Kent Beck, diseño simple es aquél que:
Tiene todos los tests en verde.
Expresa cada idea de forma explícita.
No es redundante. "Says everything once and only once".
No tiene partes superfluas. Respeta KISS. Se ciñe a la complejidad esencial del negocio y evita la complejidad accidental de la solución técnica.
Evita frustraciones. Estos son algunos consejos para conseguir un buen flujo al hacer TDD y por tanto, acortar el feedback loop y hacer emerger un diseño simple.
✅ El ciclo red/green/refactor debe ser de minutos. Para conseguirlo lo mejor es desarrollar tu código dando Baby Steps.
✅ Empieza con un test que cubra el caso más simple posible, para pasar a verde escribe el código de producción mínimo que sirva para ese caso.
✅ Puedes aplicar las heurísticas Fake it, Obvious implementation o Triangulation y la Transformation Priority Premise, para pasar de rojo a verde lo antes posible y evitar largos periodos de bloqueo (eso alarga el tiempo que tardas en recibir feedback).
✅ Cuando estés en rojo y tengas que pasar a verde, no te preocupes mucho por si el código queda bonito o has duplicado cosas. Tu objetivo es llegar a un estado estable lo antes posible! Utiliza la fase de refactor para mejorar tu diseño.
✅ En los siguientes ciclos, elige bien tus tests, para transformar tu código, haciéndolo más general, es decir, que valga para un mayor número de casos, a medida que vas escribiendo más tests específicos.
✅ No te olvides de la fase de refactor, es la oportunidad perfecta para aplicar el principio de mejora continua, mejorar y dar forma a tu diseño de forma incremental y así evitar grandes y dolorosos refactors. Happy coding!