レガシーコードと聞いてイメージしたのは「仕様書も無く、設計やコーディングもメチャクチャ、おまけに当時の開発者はすでにいない。しかし重要なシステムであるためトラブル対応や改造は続けなければいけないこの上なく保守しにくい、担当者泣かせのソースコード」というものでした。しかし、本の帯にもあるように、ここでは自動化テストのないコードを「レガシーコード」と定義しています。
私がイメージしていたような「レガシーコード」には私自身、実際に泣かされることも多いため、「銀の弾丸」的なテクニックが載っていないかと期待していましたが、残念ながらこの本からはそのようなテクニックは見つかりませんでした。
この本が主にターゲットとしているのは、「ある程度オブジェクト指向設計に基づいたソースコード」です。オブジェクト指向ではコーディングされにくいVB/VBAや、JavaやC#なのに活用されている言語機能はC言語止まり、といったコードにはあまり向いていないかもしれません。
こういうケースはやはり地道に解析するしかないんですかね・・・。
とはいえ、星は5つです。
改めて自動化テストの重要性を確認する事ができましたし、テストを優先してメソッドの可視性をあえて上げる、といった発想が新鮮でした。
この本で書かれているリファクタリング技法はマーティンファウラーの「リファクタリング」と重なる部分も多いですが、それでも「テストのためのリファクタリング」という視点が新しいと思います。
そして何より「既存のコード」への対処方法をメインに扱った書籍というのは前例がないと思います。この本を読めば間違いなく、これまでにはなかったプログラムに対する新しい視点を持つ事が出来るようになるでしょう。
P.S.
保守開発に苦労している方はこちらの本も参考になるかもしれません。
=>
「派生開発」を成功させるプロセス改善の技術と極意