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