]契約による設計における段階的な表明を追加するプロセスの話などが昨日出た。書くのだが、それとは別に最近はテスト・ファーストによる開発がお気に入り。「単体テストのカバー範囲」・「テストケースが十分であるか」・「リファクタリング時のテストの追随」などまだ勇気を持てていない部分がある。テスト駆動開発入門を購入。本屋でぱっと開いてみると細かいコードの断片が散らばっていて、何かプログラムの初学本っぽくてちょっとどうかなというのが最初の感じ。レッド/グリーン/リファクタリングのサイクルの中で、コードやテストが書き換わっていく様が非常にわかりやすい。リファクタリング-プログラムの体質改善テクニックと同様細かい作業ステップを実演していて、雰囲気が良くわかる。「テスト駆動開発はテストではなく開発方法である」というのも納得。「動作するきれいなコード」を書くために続きを読もう。めなのですぐ読み終わった。入門と銘打ってあるが、重要なエッセンスがカバーされているので1冊で結構テスト駆動開発の意味がわかると思う。グリーンにする(テストを通す)ために、アサートで期待する定数を返すようなメソッドをまず作ってしまう。いうのが衝撃的である。自分でも実際そうした事はあるのだが何か罪悪感があった。続くリファクタリングのフェーズがあるので、悪ではない。「テストの中とコードの中の重複を取り除く」リファクタリングというのもなるほどという感じ。コード中での重複はもちろん気を使っているつもりだが、テストとの重複というのは考えたことがなかった。