レガシーコードからの脱却 ―ソフトウェアの寿命を延ばし価値を高める9つのプラクティス

 先日読了。

まあまあ良書。表題のイメージとしては、モノリシックなアプリケーションをモダナイズする方法論かと思ったが、単純にアジャイル開発のプラクティス集であった。

ラクティス1 やり方より先に目的、理由、誰のためかを伝える
ラクティス2 小さなバッチで作る
ラクティス3 継続的に統合する
ラクティス4 協力しあう: ペアプロ・バディ・スパイク・スウォーム・モブ、レトロスペクティブ
ラクティス5 「CLEAN」コードを作る: 凝集性+疎結合+カプセル化+断定的+非冗長
ラクティス6 まずテストを書く
ラクティス7 テストでふるまいを明示する: レッド/グリーン/リファクタ、テストを書いてコードをスタブアウトしてからふるまいを実装する
ラクティス8 設計は最後に行う: 公開APIは実装をメソッドの中に入れない、設計は開発しながら創発する、コードがそうなっている理由としてコメントを使いコードがやっていることはコード自身に語らせる
ラクティス9 レガシーコードをリファクタリングする: できるだけ早く技術的負債を解決する、既存コードにテストを追加する、まずは全体的ふるまいに対するピンニングテストを書く、依存関係を生成するのではなくフレームワークで注入する、新しいインタフェースでラッピングして順次置き換えるストラングラーパターンを活用する、その際に新しい実装はフィーチャーフラグで隠す(抽象化によるブランチ)、オープン・クローズドの原則(拡張に対して開かれて変更に対して閉じている)