下記の記事のこの部分はどういういみなのでしょうか?

わかりやすく説明してもらえませんか?

---
http://www.atmarkit.co.jp/fdotnet/special/tdd/tdd_04.html

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/03/02 18:15:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:flashrod No.1

回答回数31ベストアンサー獲得回数3

ポイント60pt

おそらく、

  • テスト駆動開発では、リファクタリングによって、一度作成したクラスを廃止することがある
  • オブジェクト指向モデリングでは、一度設計したクラスは最後まで維持したい

この点が相反する、といいたいのではないでしょうか。

この意見はあくまでもそのページに書いてあるとおり、その筆者の意見であり、ソフトウェア開発手法として合意されているものではないと思います。私の意見では、オブジェクト指向とテスト駆動は直行するものであり、相反するものではありません。ソフトウェア開発においては、様々な層、粒度、見方、考え方で分析する必要があり、何か一つの手法で充分ということはありません。

たぶん、テスト駆動というよりは、リファクタリングが肝なのではないでしょうか。テストを書いてテストをパスするように実装する、そのテストにパスする限りは実装を書き換えて構わない、この「書き換えOK」の部分が、オブジェクト指向モデリングに限らず他のどんな開発技法とも相反するように思えるのではないでしょうか。

id:urekat

なるほど。ありがとうございます。

オブジェクト指向のモデリングを重視して行うっていうのは、

「まず、UML書きながら分析して、クラス図をもとにコードを生成して・・・」のようなやりかたということですかね。

2007/02/24 12:17:39

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません