by shigemk2

当面は技術的なことしか書かない

レガシーコード改善ガイド

レガシーコードとは

レガシーコードとは、「理解できず、変更のむずかしいコード」の俗語であるが、
本書では「テストのないコード」と定義される。

テストのないコードは悪いコードである。どれだけうまく書かれているかは関係ない。どれだけ美しいか、オブジェクト指向か、きちんとカプセル化されているかは関係ない。テストがあれば、検証しながらコードの動きを素早く変更することが出来る。テストがなければコードが良くなっているのか悪くなっているのかが本当に分からない。

つまり、テストのないコードをどうやってテストのあるコードにするかが本書の目的である。
故に、本書は美しいコードを書くための本ではない。

レガシーコードの変更手順

  1. 変更点を洗い出す (第16章 第17章)
  2. テストを書く場所を見つける (第11章 第12章)
  3. 依存関係を排除する (第7章 第10章 第23章)
  4. テストを書く (第13章)
  5. 変更とリファクタリングを行う (第8章 第21章 第22章)

この手順を念頭において、作業を行う。

検出 コードの計算した値にアクセスできないときに、それを検出するために依存関係を排除する
分離 コードをテストハーネスに入れて実行すらできないとき、分離するために依存関係を排除する

簡単にテストできるプログラムを書くには、開発と並行してテストを作成するか、少し時間をかけて
「テストの容易性に配慮した設計」を行うしかない。