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

レガシーコード改善ガイド (Object Oriented SELECTION)

レガシーコード改善ガイド (Object Oriented SELECTION)

ちょっと難しいがこれは良書を超えて名著と言わざるを得ない。その理由は以下の3つ。

  • 類書が無い
  • 実践的なノウハウが記載されている
  • 行間からレガシーコードに取り組む人に対するエールのようなものが感じられる

1つ目は異論が無いだろう。

2つ目は例えば依存関係の排除などはかなりページをさいて説明している。本書の中心的なテーマといえるだろう。それ以外にも仕様化テストは個人的に興味深かった。これはシステムの現在の振る舞いを調べ将来のデグレを防止することを目的とし、現在のシステムのバグを見つけることを目指していない。バグと仕様の区別は所詮恣意的なのだからこれは現実的なアプローチだろう。

3つ目は実際に読んで感じてもらうしかない。まあ僕も新規開発に関わりたくなる気持ちはあるわけだ。ただかりに関われたとしても新規開発気分を味わえるのは最初のリリースだけだ。そのあと長いこと保守フェーズがあるわけだから、レガシーコードに取り組むスキルは大事だよね。テストが無いのがレガシーコードと言われてしまうとほとんどがレガシーコードになりそうだし。

サンプルコードはJava, C, C++で書かれており(ちょっとだけRubyもある)、僕自身の知識不足で正直C/C++の部分はよくわからなかった。それでも読む価値はあると思う。

さらっと本のイメージをつかみたい人は下記を読むといい。

翻訳書「レガシーコード改善ガイド」の注目トピック連載一覧:CodeZine(コードジン)

ちなみに原書は5年前の2004年に出版された。原書はWorking Effectively With Legacy Code

そのせいかJavaのサンプルコードはジェネリクスが無かったり、JUnitのバージョンも3.8系のようだ。

まあそんな重箱の隅的な話はともかく、訳者あとがきにもあるように本書の価値は5年前よりむしろ高まっていると言っていいだろう。訳がでるにはいいタイミングだったのではないか。訳もいい。

あと思ったのはJavaリファクタリングしやすいのではないかということ。これは言語仕様的なことよりもEclipseが偉大だとかDIコンテナがメジャーになっているといったインフラ的な面が強いせいだろう。

積読状態のリファクタリング―プログラムの体質改善テクニック (Object Technology Series)も読み返したほうがよさそうだ。