Para ser justos, él agregó "En diversión" a esa afirmación.
Hasta el día de hoy, tiendo a comenzar modelando sistemas utilizando el enfoque de "sustantivo y verbo", pero a lo largo de los años he descubierto que TDD nos enseña que este enfoque atrae su atención hacia lo incorrecto. En este sentido, el blogger tiene un punto. Sin embargo, no estoy seguro de que sea el enfoque el culpable, más que la forma en que funcionan nuestras mentes.
Si quieres probar un pequeño desafío aquí, deja de leer e intenta modelar el juego Monopoly, usando el idioma inglés, luego vuelve aquí.
Sospecho que la tentación será mirar de inmediato los objetos con los que interactuamos mucho: el tablero, los espacios, las cartas, los dados, las piezas, pero esa no es la mayor parte de la lógica. La mayoría de estos objetos son completamente tontos. Datos, si quieres.
Pero tan pronto como comienzas a escribir pruebas, te das cuenta de qué objeto es, con mucho, el más importante en cualquier juego: las reglas.
¿Recuerdas esa pequeña hoja de papel que leíste una vez la primera vez que obtuviste el juego y no interactúas de nuevo hasta que hay una disputa? La versión computarizada no funciona de esa manera. Cada cosa que el jugador intenta hacer, una computadora consultará las reglas y verá si puede hacerlo o no.
Cuando lo piensas, haces lo mismo, pero como lleva tiempo leer las reglas en papel y tu cerebro tiene un sistema de almacenamiento en caché razonable, consulta las reglas en tu cabeza. Es probable que a una computadora le resulte fácil leer las reglas nuevamente, a menos que estén almacenadas en la base de datos, en cuyo caso también podría almacenarlas en caché.
Y esta es la razón por la que TDD es tan popular para conducir el diseño. Debido a que tiende a conducir su proceso de pensamiento rápidamente a los lugares correctos:
Cuando pienso que voy a escribir algunas pruebas para mi juego Monopoly. Podría mirar mi set e intentar encontrar los objetos. Entonces, tenemos estas piezas. Escribiré algunas pruebas para eso.
Tal vez tendré un MonopolyPiece de clase base y cada tipo de pieza derivará de ellos. Comenzaré con el DogPiece. Primera prueba ... ahh. En realidad, no hay lógica aquí. Sí, cada pieza se dibujará de manera diferente, por lo que podría necesitar un DogDrawer, pero mientras estoy desarrollando el juego, solo quiero escribir "D" en la pantalla. Voy a darle vida a la interfaz de usuario al final.
Encontremos alguna lógica real para probar. Hay muchas de estas casas y hoteles, pero no necesitan pruebas. Dinero no. Tarjetas de propiedad, no. Y así. Incluso la placa no es más que una máquina de estado, no contiene ninguna lógica.
Rápidamente descubrirá que le quedan tres cosas en la mano. Las cartas de Oportunidad y Cofre comunitario, un par de dados y un conjunto de reglas. Estas serán las partes importantes para diseñar y probar.
¿Lo viste venir cuando escribiste los sustantivos y los verbos?
De hecho, hay un gran ejemplo en los patrones y prácticas de principios ágiles de Robert Martin en el que intentan desarrollar una aplicación Bowling Score Card usando TDD y encuentran todo tipo de cosas que pensaban que eran clases obvias con las que no valía la pena molestarse.