【書評】テスト駆動開発
よく耳にするTDD:テスト駆動開発とは何か、というのを理解したかったので、テスト駆動開発を読んだ。
どんな本か
その名の通り、テスト駆動開発の実践の様子をコードと文章で説明したもの。
テスト駆動開発とは「動作するきれいなコード」をゴールとし、その過程で生じる開発者の不安を解消するための開発手法である。具体的には以下の3つを繰り返す。
- 失敗するテストコードを書く
- プロダクトコードを書き、テストを成功させる
- 設計判断を行う*1
学んだこと
つまるところ、よりよいコードと設計を生み出すための試行錯誤のプラクティスである。
感想
ポイントは2つあると思っていて、1つはプロダクトコードよりも先にテストコードを書くこと。これから作ろうとしているプロダクトコードがすでにあるという気持ちでテストコードを書くということ。
もうひとつは設計判断より先にテストコードを書くこと。139ページの言葉を借りると、
テストとコードの間の重複除去が、設計を駆動する
となる。
すなわち、テスト駆動開発は設計ありきではないのだ。したがって古典的なウォーターフォール開発のように、詳細設計書ありきでコードを書く開発現場では適用できないのは残念であった(仕事で生かせないため)。
そもそもテスト駆動開発においては、ウォーターフォールにおける詳細設計と製造を分割しない。それらはテストコードによって駆動され、互いにフィードバックをかけながら洗練されていくものである。
そしてその哲学は非常に納得感がある。