すがブロ

sugamasaoのhatenablogだよ

この本の1章だけでも繰り返し読むべき!

リファクタリング本を読んでます

リファクタリング:Rubyエディション

リファクタリング:Rubyエディション

この本は以前出版されていたリファクタリングの Ruby 版。旧版はJavaでコードが書かれていて、もちろんそれでも読めるのだけど、脳内でJava→Rubyの変換をしなくて済むし、なにより巨匠がRubyでリファクタリングをしている様を見れるというのはなかなか良い機会だと思って買った。
ちなみに、旧版はこれね。

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

  • 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/05
  • メディア: 単行本
  • 購入: 94人 クリック: 3,091回
  • この商品を含むブログ (301件) を見る

恥ずかしながら旧版を読んでいる時はあまり良さに気がつかなかったのだけど、最初の1章の時点で非常に素晴らしい。

何が素晴らしいのか

単純だけどイマイチなソースコード*1を具体的な手順を通してリファクタリングしていくという内容です。
が、そこにはデータとロジックの適切な凝集度やクラスの抽象度を上げて行ってオブジェクト間での関係と業務ロジック*2としての処理が見事にわかれていくのを目のあたりにすることができる。
情け無い話だけど、今更になってこの設計思想、リファクタリングの流れは自分が無意識に実装できるレベルになるまで読み込む必要があると痛感した。

そんな感じで

今は時間があれば1章を繰り返し読んでる。これはね、本当にオブジェクト指向の基本が詰まっているように思える。
また、その設計思想は「ThoughtWorksアンソロジー」に出てる「オブジェクト指向エクササイズ」にも通じるところがあるように思える*3。

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション

この手の本は読んで納得というよりは手を動かしていって、その思想を「言葉」でなく「心」で理解 できた! と呼べる日まで体に覚えさせないといけないと思うのです。
まだ見ていない人は、Javaが得意なら旧版を、Rubyが得意な人はRuby版を読んでみると良いですね。
だいたいのエンジニアは持ってる気がするので、借りてみるのも良いかもしれないです。

*1:自分は良くそういうコードを書いてしまう

*2:最終的に、例題ででているソースから業務ロジックが消える、という流れだ!

*3:まー、書いてるのがどっちもマーチン先生なので当然と言えば当然ですが。。。