Index: [Article Count Order] [Thread]

Date:  Thu, 13 Feb 2003 18:19:42 +0900
From:  Kenji Hiranabe <hiranabe@....jp>
Subject:  [XP-jp:04072] Test-Driven Development by Kent Beck
To:  extremeprogramming-jp@....jp
Message-Id:  <20030213181942W.hiranabe@....jp>
X-Mail-Count: 04072

平鍋です.

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.
もうすぐ,日本語訳が出るようです.

以上です.