[Quora] テストコードは書いた方がいいですか?

Quora回答シリーズです。

質問

テストコードは書いた方がいいですか?

※質問ページ

場合によっては書かなくても良いし、無理にTDDする必要もない派です。ちょっと一般論になりすぎた気もしますが簡単に回答しました。

回答

ここでのテストコードはxUnitなどに代表されるユニットテストをイメージして書いています。

例えば「画期的なアイデアを思いついた!徹夜して触れるところまで作ってしまおう」といった場合にはテストコードよりも、実際に動く状態にすることを最優先で書いてしまってかまわないと思います。

いわゆる「プロトタイプ」ですが、内部で動かすのが前提で多少のバグがあっても問題にならないようなケースでは必ずしも書かなくて良いと思います。(書いてはならないという意味ではありません)

では逆にテストコードを書いた方が良いケースとして考えられるのは次のような場合だと思います。

  • 世の中に出す製品
  • 中長期での運用が発生する
    • Webサービスのように常に稼働するものや、定期的なバージョンアップが発生するものなど

こういったケースではテストコードを書いた方が最終的な工数が減ることが多かったりします。

例えば数十行程度のコードはぱっと見れば影響範囲がわかりますが、数千行、数万行規模になってくると一箇所の変更しただけでも、それが他の部分にどのような影響を与えるか簡単にはわかりません。特に業務で開発をしていると人の入れ替わりもあり、プロジェクト内ですべてのコードを理解している人は希少です。

そんなときにテストコードがあれば、コマンド一発で他に影響がなかったかを調べることができるというわけです。汎用的に使われているライブラリや、スーパークラスの改修となるとテストコードがないと怖くておいそれとできなくなっちゃいますよね。