【書評】テスト駆動開発

よく耳にするTDD:テスト駆動開発とは何か、というのを理解したかったので、テスト駆動開発を読んだ。

www.ohmsha.co.jp

どんな本か

その名の通り、テスト駆動開発の実践の様子をコードと文章で説明したもの。
テスト駆動開発とは「動作するきれいなコード」をゴールとし、その過程で生じる開発者の不安を解消するための開発手法である。具体的には以下の3つを繰り返す。

  1. 失敗するテストコードを書く
  2. プロダクトコードを書き、テストを成功させる
  3. 設計判断を行う*1

学んだこと

つまるところ、よりよいコードと設計を生み出すための試行錯誤のプラクティスである。

感想

ポイントは2つあると思っていて、1つはプロダクトコードよりも先にテストコードを書くこと。これから作ろうとしているプロダクトコードがすでにあるという気持ちでテストコードを書くということ。

もうひとつは設計判断より先にテストコードを書くこと。139ページの言葉を借りると、

テストとコードの間の重複除去が、設計を駆動する

となる。

すなわち、テスト駆動開発設計ありきではないのだ。したがって古典的なウォーターフォール開発のように、詳細設計書ありきでコードを書く開発現場では適用できないのは残念であった(仕事で生かせないため)。

そもそもテスト駆動開発においては、ウォーターフォールにおける詳細設計と製造を分割しない。それらはテストコードによって駆動され、互いにフィードバックをかけながら洗練されていくものである。

そしてその哲学は非常に納得感がある。

*1:本文中では「リファクタリング」と呼ばれている。しかしメソッドの外部構造も変更しうるので、リファクタリングってあまり適切な呼び方ではないと思っている