テストコードがないコードだけが技術的負債じゃないよ

私は「レガシーコード改善ガイド」を読んだことがないのですが、世間的に「テストコードがないコードが技術的負債」という認識が広まっているようです。

レガシーコード改善ガイドを批判するつもりは全くありませんが、たんにその本の中で使われている「レガシーコード」の定義に一致する物だけが技術的負債だという考えには反対します。

技術的負債とは、将来必要とされるメンテナンスコストの期待値だと思います。全てのコードは、メンテナンスを放棄するまでは技術的負債です。一方、メンテナンスコストを差し引いた上でそのコードが将来生み出す利益の期待値が、そのコードの資産価値だと思います。テストコードがないコードでも、利益を出すなら正の資産になります。

もちろん、資産価値をより大きくするために、技術的負債を減らすことは良いことです。技術的負債を下げる=メンテナンスコストを下げることで、テストはその有力な手段の一つです。他にもリーダビリティの高いコードを書いたり、最初からリーダビリティの高いコードを書きやすい言語を選ぶことも、有力な手段です。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。