『レガシーコード改善ガイド』を読みました。
読み始めの動機
以前読んだ 『モノリスからマイクロサービスへ』にて下記のように紹介されていたため興味を持ちました。
既存のモノリスをビジネスドメインの境界線に沿って再編成するというルートに進むのであれば、Michael Feathersの『レガシーコード改善ガイド』が間違いなくお勧めだ。
マイクロサービス開発をするにあたり、なにかヒントを得たいと言う動機でした。
感想
自動テスト、テストコードを重視した立場から、ソフトウェアの振る舞いをかえずにレガシーコードを改善する方法をいくつも学ぶことができて良かったです。
冒頭の
私にとって、レガシーコードとは、単にテストのないコードです。
は刺さりましたね。
個人の経験と照らし合わせると、知っている、実践できていることも多かったです。『リファクタリング』や『ドメイン駆動設計入門』を愛読しており、これらと重なる部分が多かったです。『リファクタリング』と異なる点としては、『レガシコード改善ガイド』はC++やJavaを題材に書かれているため、インターフェースを活かした静的型付け言語特有のリファクタリングパターンが多数紹介されていました。
他書で学んだ以外には、業務でのコードレビュー等を通して学んだ事も多く書いてありました。具体的には、
- どのレイヤーでテストをすべきかどうかの判断
- 外部APIやライブラリに依存したコードのテストの方法
などです。暗黙知だったことが明文化されていたため、自分の考えに納得感を持つことができました。
書籍の構成としては、
- サンプルコードが豊富
- 巻末の用語集が復習に最適
といった点が良かったです。
原著は『Working Effectively with Legacy Code (Robert C. Martin Series) (English Edition)』で2004年の出版のため、およそ20年前にかかれています。例題の古さを感じるものの、それを差し引いても読んでおいてよかったと感じます。