In tutta onestà, ha aggiunto "In fun" a tale affermazione.
Fino ad oggi, tendo a modellare i sistemi usando l'approccio "sostantivo e verbo", ma negli anni ho scoperto che TDD ci insegna che questo approccio focalizza l'attenzione su ciò che è sbagliato. In questo senso, il blogger ha ragione. Tuttavia, non sono sicuro che sia l'approccio in difetto, piuttosto che il modo in cui funzionano le nostre menti.
Se vuoi provare una piccola sfida qui, smetti di leggere e prova a modellare il gioco Monopoly, usando la lingua inglese, quindi torna qui.
Sospetto che la tentazione sarà quella di guardare immediatamente gli oggetti con cui interagiamo molto - il tabellone, gli spazi, le carte, i dadi, i pezzi - ma non è qui che va la maggior parte della logica. La maggior parte di questi oggetti sono completamente stupidi. Dati, se vuoi.
Ma non appena inizi a scrivere test, ti rendi conto di quale oggetto è di gran lunga il più importante in qualsiasi gioco: le regole.
Ricordi quel pezzettino di carta che hai letto una volta quando hai iniziato a giocare e non interagire di nuovo fino a quando non c'è una disputa? La versione computerizzata non funziona in questo modo. Ogni singola cosa che il giocatore cerca di fare, un computer consulterà le regole e vedrà se gli è permesso farlo o no.
Quando ci pensi, fai la stessa cosa, ma poiché ci vuole tempo per leggere le regole cartacee e il tuo cervello ha un ragionevole sistema di memorizzazione nella cache, consulta le regole nella tua testa. Un computer probabilmente troverà facile leggere nuovamente le regole, a meno che non siano archiviate nel database, nel qual caso potrebbe anche memorizzarle nella cache.
E questo è il motivo per cui TDD è così popolare per il vero design di guida. Perché tende a guidare rapidamente il processo di pensiero nei posti giusti:
Quando penso che scriverò alcuni test per il mio gioco Monopoli. Potrei guardare il mio set e provare a trovare gli oggetti. Quindi, abbiamo questi pezzi. Scriverò alcuni test per quelli.
Forse avrò un MonopolyPiece di classe base e ogni tipo di pezzo deriverà da quelli. Inizierò con DogPiece. Primo test ... ahh. In realtà, non c'è logica qui. Sì, ogni pezzo verrà disegnato in modo diverso, quindi potrei aver bisogno di un DogDrawer, ma mentre sto completando il gioco, voglio solo scrivere "D" sullo schermo. Aggiungerò l'interfaccia utente alla fine.
Troviamo qualche logica reale da testare. Ci sono molte di queste case e hotel, ma non hanno bisogno di test. Denaro, no. Carte di proprietà, n. E così via. Anche la scheda non è altro che una macchina a stati, non contiene alcuna logica.
Scoprirai rapidamente che hai ancora tre cose in mano. Le carte Chance e Community Chest, una coppia di dadi e un set di regole. Queste saranno le parti importanti da progettare e testare.
L'hai visto arrivare quando hai scritto i nomi e i verbi?
Vi è, infatti, un grande esempio in Agile Principles Patterns and Practices di Robert Martin in cui cercano di dare forma ad un'app Bowling Score Card usando TDD e trovano ogni genere di cose che pensavano fossero delle classi ovvie, per le quali non valeva la pena preoccuparsene.