Index: [Article Count Order] [Thread]

Date:  Mon, 27 Nov 2000 13:32:30 +0900
From:  "Masaru Ishii" <mishii@....jp>
Subject:  [XP-jp:01197] RE:  Test First Programming でも、デバッグは必要ですね。
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <NEBBLCBLMJKDLAMIAMIGMEENCOAA.mishii@....jp>
In-Reply-To:  <B645D684.2C15%khosokawa@....com>
Posted:  Mon, 27 Nov 2000 13:34:18 +0900
X-Mail-Count: 01197

石井です.

> 実は、この話には、おちがあります。プログラムを読みたくない方は、ここで、「
> ここまで」をサーチして、そこからお読み下さい。

すみません,読みたくないっていうわけじゃありませんが,プログラム
読んでません(^^;.

> 結局、Test First Programming は、凄いというつもりが言えなくなってしまいま
し
> た。print文に頼らざるえなくなったのは、以下の理由からかと思っています。

print文のデバッグは,僕も結構やってますし,そんなに気にしてませんよ.

> 1.乗ってくるとテストを書かなくなる。20分ぐらい、テストなしで
> コードをかいていますね。これは、ペアプログラミングをしていれば、相方が
> 注意してくれたでしょうか?

僕の場合,Unit Test 書き始めのころのコードを見ると,テストが甘く
もっとTest First を徹底しておけばよかったと思うことが多いです.
後からテストコードを追加するという作業はかなりつらいです.
ペアでないとくじけそうになります.一度痛い目を見ないと,テストを
先に書くという習慣はつかないかもしれません.

> 2.コンパイルを通すために芋づる的にどんどんコードだけを書いてしまう
> ような気がします。中身のないメソッド、例えば、return null だけのメソッド、
> を書いてコンパイルを通すような事をもっと行うべきか?

これはテストをテストするために必要ですね.テストコードが正しいかどうか
を検証するには,わざとエラーを出すようにしてみるのが手っ取り早いです.
それと,一旦テストが通ったらリファクタリングできないか考える習慣も
つける必要があると思います.

> 3.メソッドがprivateだったため、テストを怠ったところがありました。
> SummarizerのsummarizeとfindSumは、テストが必要だったでしょう。

private もテストすべきという立場と public だけで十分という立場があるよう
ですが,これは,一般論で考えるより,private でもそのメソッドが失敗
しそうならテストすべき,と思うほうが現実的じゃないかと思います.
private まで徹底的にテストすると,リファクタリングするときに困るし.

> 4.それから、今回、問題の根源であったSummarizerTestHelperのisEqualは、
> publicでは、ありましたが、テストのヘルパーという位置付けのため、テスト
> をする事を全く考えていませんでした。

こっちも上と同じかな.

Test First Programming がすごい,というのではなくて実際にはテストを先に
書かないとテストが甘くなる,または書かない,というのが本当のところだと思
います.

では.