レガシーコードとは
レガシーコードとは、「理解できず、変更のむずかしいコード」の俗語であるが、
本書では「テストのないコード」と定義される。
テストのないコードは悪いコードである。どれだけうまく書かれているかは関係ない。どれだけ美しいか、オブジェクト指向か、きちんとカプセル化されているかは関係ない。テストがあれば、検証しながらコードの動きを素早く変更することが出来る。テストがなければコードが良くなっているのか悪くなっているのかが本当に分からない。
つまり、テストのないコードをどうやってテストのあるコードにするかが本書の目的である。
故に、本書は美しいコードを書くための本ではない。
レガシーコードの変更手順
- 変更点を洗い出す (第16章 第17章)
- テストを書く場所を見つける (第11章 第12章)
- 依存関係を排除する (第7章 第10章 第23章)
- テストを書く (第13章)
- 変更とリファクタリングを行う (第8章 第21章 第22章)
この手順を念頭において、作業を行う。
検出 コードの計算した値にアクセスできないときに、それを検出するために依存関係を排除する
分離 コードをテストハーネスに入れて実行すらできないとき、分離するために依存関係を排除する
簡単にテストできるプログラムを書くには、開発と並行してテストを作成するか、少し時間をかけて
「テストの容易性に配慮した設計」を行うしかない。