Aquí estoy de nuevo para comentar otro gran libro que hace tiempo leí. Me di cuenta cuando escribía el post del libro de @rcanalesmora que no había hecho ninguna reseña sobre este, Diseño Ágil con TDD de @carlosble, y decidí que tendría que ser lo próximo en el blog :)
Aunque hace bastantes meses que lo terminé, justo después del curso al cuál asistí impartido también por @carlosble en Madrid, su contenido me viene a la cabeza una y otra vez cuando me enfrento a la codificación diaria. En mi día a día no suelo aplicar TDD en el trabajo, aunque me gustaría meterlo en nuestro proceso de desarrollo, pero si que me he puesto más serio con la creación de pruebas. Puede que ya tuviera alguna base sobre ello pero ha sido a raíz del curso, el libro e infiltrarme por @agilespain, cuando "vi la luz" que podría servirme de ayuda en este oscuro túnel del desarrollo.
El libro toca muchos aspectos del "buen hacer" en los desarrollos de software que pretendan tener calidad y ser más fácilmente mantenibles y extensibles. Además, recordemos que TDD no va, únicamente de hacer pruebas, sino que es mucho más: diseño, código mínimo, cobertura de funcionalidad, bajo acoplamiento, alta cohesión, etc.
Una de las cosas que más me gustan del libro es el lenguaje cercano con él cuál lo redacta @carlosble, ya que, al igual que la gente de Head First, ayuda mucho a hacer la lectura más amena y a mantenerte más involucrado e interesado. Por otra parte, lo que menos me ha gustado del libro es "el ejemplo principal", que abarca su construcción un par de capítulos y se me fue haciendo cada vez más denso. Estaría bien quizás fuera más simple. En cualquier caso es opinión personal y lo digo con todo el respeto.
Del resto del libro solo puedo decir "Lectura Obligada" :D Además que creo tienen un objetivo claro:
- Los primeros capítulos recomendados a la gente que "ha oído campanas y no saben donde", ya que TDD es un concepto más que confuso para mucha gente. Además que una vez te metes a practicarlo su curva de aprendizaje es importante, ya que puede resultar, según el problema, complejo... pero enriquecedor!
- Enumerar y distinguir los tipos de test y hablar de los "dobles" es más que esencial. ¿Cuántas veces hemos usado el termino "unitario" para test de integración? ¿Y de "integración" para test de sistema o funcionales? ... distintos términos con el mismo objetivo pero que implican diversos factores que determinan si es de un tipo u otro.
- Genial por parte del autor incluir un capítulo de Diseño Orientado a Objetos. No podemos escribir buen código sin tener unos buenos cimientos y aquí entra esto... de echo, la primera vez que escuche SOLID fue en el curso de @carlosble y luego escribí un post sobre esto.
- La parte final también merece una nota alta. Me he sentido identificado con muchos de los antipatrones (seguro que yo he creado alguno nuevo xD) y errores comunes. Y la parte de Integración Continúa es una pieza clave para sacar todos los beneficios a TDD y las pruebas automatizadas.
Actualizado: Como bien me han recordado, el libro también consta de un prólogo y una sinopsis que deberían mencionarse :) El prólogo, del señor @jmbeas, habla de dos cerditos que, digamos, representan, por un lado las metodologías tradicionales y, por otro las ágiles. Me hizo mucha gracia y fue una de las primeras cosas que leí de él... así normal la primera impresión que tuve :P
La sinopsis es del gran @AlfredoCasado, una eminencia en estos temas del desarrollo ágil, pruebas automatizadas y entornos de integración continua. Os recomiendo escuchar sus podcast en JavaHispano porque no tienen desperdicio, una gran calidad.
--------------------------

Wow Kini, muchas gracias! Que gran publicidad tio! Tu si que eres un tio grande. Con posts como este dan ganas de escribir mas libros. A ver si hacemos uno entre todos sobre mas buenas practicas. En mente está, ahora a ver si se dan las condiciones adecuadas.
Un abrazo!