Kent Beckのテスト駆動開発入門の読んだので,途中までのメモ.
TDDの目的 = 『動作するきれいなコード』
TDDを用いたプログラミングでは,
- 動作するコード
- きれいなコード
を目指す.
TDDの手順
- レッド: コケるテストを書く
- グリーン: とにかく速くテストをパスさせる
- リファクタリング: グリーンのままでコードの重複を取り除く
動作するコードは『グリーン』で,
きれいなコードは『リファクタリング』によって生み出す.
目標を『動作する』と『きれいな』の2つに分割し,それぞれ個別に解決していくイメージ.
大きな目標と小さな目標
- 大きな目標: 動作するきれいなコード
- 小さな目標: (どんな手を使ってでも)テストを素早くパスさせる
TDDは「可能にする」
TDDは,小さな手順で作業することではなく,小さな手順での作業が可能になることである.
テストを強制しているわけではない.
テスト完成から数秒以内にグリーンに
そのための戦略
- 明白な実装
- グリーンのための処理がイメージできるとき,本実装をいきなり記述する
- 仮実装
- どうすればグリーンにできるか分からないとき,まず定数を返すように書き,徐々に変数を持ち込む
- 三角測量
- 「仮実装」から「明白な実装」へ進むとき,あるいはリファクタリングをするときに,(必要ならば)同じ関数について2つのテストを書き,一般化へのきっかけをつかむ
三角測量によってある機能における『不変部分』と『可変部分』を明確化し,一般的な処理を記述するための足掛かりを得られる.