公正に、彼はその主張に「楽しみ」を加えました。
今日まで、私は「名詞と動詞」アプローチを使用してシステムをモデル化することから始める傾向がありますが、TDDはこのアプローチが間違ったことに焦点を当てることを教えてくれることを長年にわたって知っています。この意味で、ブロガーにはポイントがあります。しかし、それが私たちの心の働き方ではなく、誤ったアプローチであるかどうかはわかりません。
ここで少し挑戦したい場合は、読み上げを止めて、英語を使用してMonopolyゲームをモデル化してから、ここに戻ってください。
ボード、スペース、カード、サイコロ、ピースなど、私たちがよくやり取りするオブジェクトをすぐに見たいと思うかもしれませんが、それはロジックの大部分が行く場所ではありません。これらのオブジェクトのほとんどは完全に馬鹿です。必要に応じてデータ。
しかし、テストを書き始めるとすぐに、どのオブジェクトがどのゲームでも最も重要であることに気付きます:ルール。
ゲームを初めて入手したときに一度読んだ小さな紙切れを思い出してください。紛争が発生するまで再びやり取りしないでください。コンピュータ化されたバージョンはそのようには動作しません。プレーヤーがしようとするすべてのことは、コンピューターがルールを調べて、許可されているかどうかを確認します。
あなたがそれについて考えるとき、あなたは同じことをしますが、紙ベースのルールを読むのに時間がかかり、あなたの脳は合理的なキャッシングシステムを持っているので、あなたは頭の中でルールを調べます。コンピュータは、おそらくルールを再び読みやすいと思うでしょう-ルールがデータベースに保存されていない限り、その場合、ルールもキャッシュされる可能性があります。
そして、これがTDDが実際にデザインを運転するのにとても人気がある理由です。それはあなたの思考プロセスを適切な場所に素早く導く傾向があるからです:
モノポリーゲームのテストを書くつもりだと思うとき。セットを見て、オブジェクトを見つけようとするかもしれません。だから、私たちはこれらのピースを持っています。それらのためにいくつかのテストを書きます。
たぶん、基本クラスMonopolyPieceがあり、各タイプのピースはそれらから派生します。DogPieceから始めます。最初のテスト...ああ。実際、ここにはロジックはありません。はい、各ピースは異なる方法で描画されるため、DogDrawerが必要になる場合がありますが、ゲームを肉付けしている間、画面に「D」と書きたいだけです。最後にUIにスパイスを加えます。
テストする実際のロジックを見つけましょう。これらの家やホテルはたくさんありますが、テストは必要ありません。お金じゃない プロパティカード、ありません。等々。ボードもステートマシンに過ぎず、ロジックは含まれていません。
手に3つのものが残っていることがすぐにわかります。チャンスとコミュニティチェストカード、サイコロのペアとルールのセット。これらは設計とテストの重要な部分になります。
名詞と動詞を書いたときにそれが来るのを見ましたか?
実際、Robert MartinのAgile Principles Patterns and Practicesには、TDDを使用してボウリングスコアカードアプリを具体化して、明らかに面倒だと思われるあらゆる種類のものを見つけようとする素晴らしい例があります。