Practicar outside-in TDD con la kata Markdown transformer
28-04-2022
Trabajando con markdown para la edición de libros, dentro del desarrollo que estamos haciendo para Savvily, nos dimos cuenta de que en un libro impreso en papel no sirven los hipervínculos. Un enlace a una URL tiene sentido en un PDF o en un epub, pero en el papel sería invisible. Entonces necesitábamos hacer una transformación en los ficheros markdown, cambiar hipervínculos por notas al pie, de manera que la URL se pueda leer al pie de página. El objetivo es que del markdown inicial se pueda seguir generando pdf y epub, además del libro en papel.
Nuestro objetivo era crear una herramienta para usar desde la terminal de comandos que recibiera un fichero markdown de entrada y produjese otro sin hipervínculos, con notas al pie:
$ ./markdown-transformer links2footnotes origin.md destination.md
Utilizamos el problema como ejercicio para trabajar diseño de software con TDD, mediante outside-in TDD y lo grabamos en varios videos. Ha resultado ser un ejercicio muy bueno para practicar y estudiar sobre diseño de software, porque es pequeño pero a la vez real y con un cierto grado de complejidad.
Podrías utilizar los videos para aprender, practicando primero por tu cuenta o con tu equipo y luego viendo cómo lo solucionamos nosotros. Los videos son los siguientes:
- Parte 1: Introducción teórica al problema y a las técnicas
- Parte 2: Empezando con outside-in TDD y mocks
- Parte 3: Bajamos al algoritmo y lo implementamos con TDD
- Parte 4: Terminamos el algoritmo y hacemos refactoring de la solución final
Revisitamos juntos la kata, en grupo:
Tuvimos una quinta sesión en formato mob programming que no llegamos a grabar, donde implementábamos el intérprete de comandos, el método main
y dejamos el ejecutable listo con toda la funcionalidad. Lo hicimos también con TDD. Es posible que lo grabemos más adelante y lo añadamos a la colección porque también nos pareció un ejercicio muy interesante. Puedes ver los commits y el repositorio con el resultado final en Github.
Si te resulta útil el ejercicio o nuestros videos, por favor déjanos feedback constructivo en los comentarios de Youtube, incluyendo enlaces a tus soluciones en Github o también en video grabado.