Fairerweise hat er dieser Behauptung "In fun" hinzugefügt.
Bis heute neige ich dazu, Systeme mit dem "Nomen und Verb" -Ansatz zu modellieren, aber ich habe im Laufe der Jahre festgestellt, dass TDD uns lehrt, dass dieser Ansatz Ihren Fokus auf das Falsche lenkt. In diesem Sinne hat der Blogger einen Punkt. Ich bin mir jedoch nicht sicher, ob es eher der fehlerhafte Ansatz als die Art und Weise ist, wie unser Geist arbeitet.
Wenn Sie hier eine kleine Herausforderung versuchen möchten, hören Sie auf zu lesen und versuchen Sie, das Monopoly-Spiel in englischer Sprache zu modellieren. Kommen Sie dann hierher zurück.
Ich vermute, die Versuchung wird darin bestehen, sofort die Objekte zu betrachten, mit denen wir viel interagieren - das Brett, die Felder, die Karten, die Würfel, die Teile -, aber hier geht nicht der Großteil der Logik hin. Die meisten dieser Objekte sind völlig dumm. Daten, wenn Sie so wollen.
Sobald Sie jedoch anfangen, Tests zu schreiben, erkennen Sie, welches Objekt bei weitem das wichtigste in einem Spiel ist: die Regeln.
Erinnerst du dich an das kleine Stück Papier, das du einmal gelesen hast, als du das Spiel zum ersten Mal bekommen hast, und mit dem du erst wieder interagierst, wenn es einen Streit gibt? Die Computerversion funktioniert nicht so. Bei jedem Versuch des Spielers konsultiert ein Computer die Regeln und prüft, ob er dies tun darf oder nicht.
Wenn Sie darüber nachdenken, tun Sie dasselbe, aber da das Lesen der papierbasierten Regeln einige Zeit in Anspruch nimmt und Ihr Gehirn über ein vernünftiges Caching-System verfügt, konsultieren Sie die Regeln in Ihrem Kopf. Ein Computer wird es wahrscheinlich genauso einfach finden, die Regeln erneut zu lesen - es sei denn, sie sind in der Datenbank gespeichert. In diesem Fall werden sie möglicherweise auch zwischengespeichert.
Und deshalb ist TDD so beliebt, um tatsächlich Design zu fahren. Weil es dazu neigt, Ihren Denkprozess schnell an die richtigen Stellen zu bringen:
Wenn ich denke, dass ich einige Tests für mein Monopoly-Spiel schreiben werde. Ich könnte auf mein Set schauen und versuchen, die Objekte zu finden. Also haben wir diese Stücke. Ich werde einige Tests für diese schreiben.
Vielleicht habe ich ein MonopolyPiece der Basisklasse und jede Art von Stück leitet sich von diesen ab. Ich werde mit dem DogPiece beginnen. Erster Test ... ahh. Eigentlich gibt es hier keine Logik. Ja, jedes Stück wird anders gezeichnet, daher brauche ich möglicherweise einen DogDrawer, aber während ich das Spiel ausarbeite, möchte ich nur "D" auf den Bildschirm schreiben. Ich werde die Benutzeroberfläche am Ende aufpeppen.
Lassen Sie uns eine tatsächliche Logik zum Testen finden. Es gibt viele dieser Häuser und Hotels, aber sie brauchen keine Tests. Geld, nein. Immobilienkarten, Nr. Und so weiter. Auch wenn die Karte nichts anderes als eine Zustandsmaschine ist, enthält sie keine Logik.
Sie werden schnell feststellen, dass Sie noch drei Dinge in der Hand haben. Die Chance- und Community-Truhenkarten, ein Paar Würfel und ein Regelwerk. Dies sind die wichtigen Teile, die entworfen und getestet werden müssen.
Hast du das kommen sehen, als du die Substantive und Verben ausgeschrieben hast?
Tatsächlich gibt es ein großartiges Beispiel in Robert Martins Agile Principles Patterns and Practices, in denen sie versuchen, eine Bowling Score Card-App mit TDD zu entwickeln und alle möglichen Dinge zu finden, von denen sie glaubten, dass sie offensichtlich keine Klassen wert waren.