来週話すクソコードに思いを馳せる毎日ですが、クソコードと言うか、嫌なコードだなと思うコードの一つに、テストしにくいコードがあります。
テストできないんじゃどうしようもない
アプリを開発していてテストできないというのは、もう、なんというか、どうしようもない状態な訳です。
「テストコードがないコードをレガシーコードと呼ぼう」を合言葉にレガシーコード改善ガイドという本すらあります。この本で語られているのは、テスタビリティの欠片もないコードを、何とかテスト可能なように改良してテストを追加するテクニックです。そのテクニックだけで472ページにも及ぶ大型本が書けてしまうのですから、テスタビリティのないコード恐るべしという感じです。
レガシーコード改善ガイド (Object Oriented SELECTION)
posted with amazlet at 14.08.04
マイケル・C・フェザーズ
翔泳社
売り上げランキング: 26,909
翔泳社
売り上げランキング: 26,909
じゃあどうすればテスタビリティのあるコードが書けるのか?というと、
- はじめからテストを書く
- テストを書くことを想定して書く
のいずれかしかない訳です。いずれにしても、テストコードが書けない人にテスタビリティのあるコードは書けません。だからテストコードの書き方を学ぶということには意義がある訳です。更に、テストコードをどのように書けば良いか?という発想の源泉には、ホワイトボックステストやブラックボックステストなどのテスト技法に対する基本的な知識が必要な訳で、コードを書く以上テストに対する考え方からは逃れられないわけですね。
しかしRSpecなど特定のテストスイートの「使い方」を説明した本はあるのですが、「テストコードの考え方」を説明した本がないのが、テスタビリティのあるコードを普及させる難しさであると思います。テストの観点が重要なわけですね。で、そんなナイスなテーマを伊藤さんがまとめてくれていたりするので、乞うご期待なのでした。