Estilos de TDD: estilo Buenos Aires

Hace un par de meses mi colega Hernán Wilkinson, hizo una serie de webcasts que llamó Diseño a la gorra. En ese contexto Hernán dedicó un par de capítulos a explicar en detalle su estilo de TDD que, principalmente por cuestiones “marketineras” y contrastando con los la discusión London vs Chicago, denominó “Estilo Buenos Aires”. A lo largo de varias sesiones Hernán fue explicando su estilo mientras resolvía el mismo problema que resuelven Bob Martin y Sandro Mancuso en su debate de London vs. Chicago.

Lo que voy a contar a continuación surge en parte de lo explicado por Hernán en las sesiones de diseño a la gorra y en parte de algunos otras conversaciones que he tenido con Hernán.

En términos de de-adentro-hacia-afuera o de-afuera-hacia-adentro el estilo propuesto por Hernán es claramente de-adentro-hacia-afuera, esto es comenzar por el modelo de negocio y luego conectar la interfaces. Esto está en línea con el estilo Chicago pero según Hernán su estilo se distingue del estilo Chicago en por donde empieza el desarrollo de ese modelo de negocio. En su propuesta Hernán dice que comienza “por el medio”, esto es: comenzar por el modelo de negocio pero modelando primero los objetos “más grandes” que son los que suelen tener una relación más directa con las funcionalidades que ve el usuario de la aplicación.

Al margen del flujo de TDD, creo que la cuestión que personalmente me resultó más interesante de la propuesta de Hernán es la forma en que modela el negocio, particularmente el uso de metáforas, una de las prácticas originales (y me animo a decir menos populares) de XP. En interesante (y tal vez hasta polémico) que a medida que avanza el desarrollo, Hernán va comparando métricas de las 3 soluciones (Chicago vs. London vs. Buenos Aires). No quiero spoilear, pero los resultados de la comparación son muy interesantes aunque a mi parecer no tienen tanto que ver con el estilo de TDD sino con la forma de modelar los objetos.

Personalmente sigo prefiriendo la propuesta de Freeman, pero creo que la propuesta de Hernán es muy interesante y creo que para aplicaciones con modelos de negocio complejos puede llegar a resultar muy conveniente. Al mismo tiempo y hablando particularmente del caso de estudio (el denominado openchat), quiero destacar que, más allá del flujo de TDD, el modelo de objetos resultante de la solución de Hernán me resultó mucho más afín a lo que yo mismo hubiera generado (de hecho la solución de Mancuso/London me resultó demasiado “procedural” para mi gusto).

Más allá de la cuestión conceptual de TDD y el diseño de objetos quiero destacar la generosidad de Hernán y de 10 Pines en llevar adelante esta iniciativa ya que todo el material de estas sesiones (tanto videos como código fuente) están disponibles en la web en forma gratuita (cosa que no ocurre con los videos de la serie London/Chicago). Otro valor adicional de esta iniciativa es que los videos son la grabación en vivo del webcast lo cual agregar el condimento de las preguntas y comentarios de los participantes. Gracias Pinos.

Finalmente cierro con algunos destacados:

  • En el episodio 13 (parte 5 de London vs. Chicago), Carlos Peix muestra una solución estilo London utilizando Net Core.
  • En los episodio 14 y 15 (parte 6 y 7 de London vs. Chicago), Hernán muestra como agregar la persistencia al modelo desarrollado utilizando dos medios persistentes diferentes
  • El código de la solución desarrollada está disponible en Github
  • Más de TDD, en el episodio 5 se cuenta una breve historia de los closures

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.