説明として分かりやすかったのは以下で、まんまそのまま書いてある。長いがそのまま引用する。
> では、どんなときにTDDを採用すべきではないか。
> 筆者の個人的な感想ということをあらかじめ断っておくが、
> 恐らくオブジェクト指向のモデリングを重視して行うプロジェクトは、TDDと相性が悪いだろう。
> というのは、TDDではコードの重複を取り除き、リファクタリングを行っていく過程で、クラスが生まれたり消えたりするからだ。
> 例えば、『テスト駆動開発入門』に出てくる例でも、クラスが生まれたり消えたりする過程が描かれている。
> もし、個々のクラスが存在することに必然性があり、個々のクラスが特定の役割を担うことが期待されるなら、
> コードの重複を取り除く、というような目的のために、クラスが生まれたり消えたりすることは受け入れられるものではないだろう。
> このような問題は、オブジェクト指向モデリングという技法を支持しない筆者のようなプログラマであればまったく問題はないが、
> もっぱらオブジェクト指向モデリングを通してプログラムの構造をイメージする「オブジェクト脳」の持ち主には厳しい制約かもしれない。
> http://www.atmarkit.co.jp/fdotnet/special/tdd/tdd_04.html