TDDBCのUstを見てから、テスト駆動開発についてちゃんと勉強しようと、テスト駆動開発入門とレガシーコード改善ガイドを読み始めました。 ほとんどの開発現場がそうであるように、うちの開発現場でもレガシーコードで溢れているのですが、レガシーコードとは一体なんなのでしょう。レガシーは「遺産」という意味なので、技術的負債と考えればよさそうです。では、どのようなコードが技術的負債なのでしょうか。 テストがないコードはレガシーコードだ! レガシーコード改善ガイドに以下のような文章がありました。 テストのないコードは悪いコードである。どれだけうまく書かれているかは関係ない。どれだけ美しいか、オブジェクト指向か、きちんとカプセル化されているかは関係ない。テストがあれば、検証しながらコードの動きを素早く変更することができる。テストがなければコードが良くなっているのか悪くなっているのかが本当にはわからない。 ここで言うテストとは、テストコードのことを指しています。なぜテストコードがないとレガシーコードなのか、コードがきれいで拡張性が高いだけではなぜ不十分なのか。 新規のプロジェクトが立ったとき、ほとんどのエンジニアは美しいコードを書きたいと思っているはずです。コードがきれいで拡張性が高く、将来の仕様変更や機能追加にも柔軟に対応できるようなコードです。