平鍋です.
Kent Beck の新刊,"Test-Driven Development by Example" を読
み終えましたので,内容の簡単な紹介をします.
全体は,
1) 簡単な例題
2) ちょっと複雑な例題
3) TDD パターン
というような構成になっています.
1) まず最初は,Money クラスが例題です.
$1 + \120 = $2 (if \120 == $1)
のようなことが出来る,マルチ通貨のクラスを TDD で作って行き
ます.TODO リストにやることを書き,それを線で消して行きま
す.リズムは,Red/Green/Refactor です.3つそれぞれのモード
で,どのような考え方をするか,がを説明しながら物語が進みま
す.Java + JUnit です.
Kent 自身が xUnit を走らせる頻度(0-10分)の統計や,コード行
数,複雑度のメトリクスも乗せてあります.
2) 次は,xUnit 自身の開発です.ここでは,Python を利用してい
ます.これもTDDで進みますが,まだ xUnit が存在しない言語上で
xUnit 自身を TDD で作る,という想定です.再帰的な問題なの
で,Bootstrap が必要になります.Kent は,新しい言語を学ぶ時
に,xUnit を実装してみる.と言っています.
3) その後,TDD 開発に発見されるパターンが掲載されています.
このパターンの「形式」は,Design Patterns や Alexander のも
のとは違い,もっとラフなものです.例えば,
assertEquals(3, add(1,2));
というテストを通すのに,
int add(int i, int j) { return 3; }
というコードをまず書くパターンを "Fake It" と呼びます.
それから,GoF を始めとする Design Patterns が,TDD の中でど
のように現れるか,の解説があります.
また,pressure が強まると test を書かない.test を書かないと
品質が落ちてまた pressure が強くなるというのを,Weinberg の
「影響ダイヤグラム」で記述し,これもパターンとしています(付
録に,影響ダイヤグラムの書き方があります)
最後に,Martin Fowler が「この手法が確立されるかどうかは実験
的段階だ」というコメントを最後に寄せています.
* * *
私の感想ですが,やはり新しい思考の枠組を,新しい語彙群として
作って行く Kent Beck の手椀には感心しました.もう一つ,とて
も Kent らしいな,と思ったのは,
「贅沢な椅子を用意しなさい.コンピュータを乗せる机は安物でよ
いから,プログラマーが座る椅子は満足の行くものにせよ.」
という言葉です.
P.S.
もうすぐ,日本語訳が出るようです.
以上です.