リファクタリングってご存知ですか。
プログラムの外部から見た動作を変えずに内部構造を改善することです。
用語は知らなくてもだれでもやってることです。
より良い変数名、メソッド名に置き換えることや重複しているコードを1つのメソッドにするだとかが良い例です。
さてこのリファクタリングですが、検索するといくつか出てきます。
その中でもMartin Fowlerの「リファクタリング」と
[tmkm-amazon]4894712288[/tmkm-amazon]
結城浩の「Java言語で学ぶリファクタリング入門」が有名だと思っています。
[tmkm-amazon]4797337990[/tmkm-amazon]
今日はこの2冊の比較。
ちなみに現在の研究テーマがリファクタリングなので、この2冊はちゃんと読みましたよ!穴が開くほどでは無いですが。
まず注意すべき点が2つ。
- 結城さんの本はFowlerの本を参考にしているので基本的にFowler本の方がリファクタリングの種類は多い。
- 結城さんの本は入門
以上を踏まえてレビュー。
まずFowler本の良い点
- リファクタリングについての詳細な説明がある
- リファクタリングの種類が多い
- 不吉な匂いの説明が詳しい
Fowler本の悪い点
- コードが簡略化されすぎている。
- こればっかりは仕方ないが、日本語訳がしっくりこない
結城本の良い点
- 1つ1つのリファクタリングに対する詳細な説明
- 簡潔すぎる感じはするが、実際に動くコードである
- 分かりやすい文章
結城本の悪い点
- 対象リファクタリングが少ない
- 冗長性
以上です。
正直悪い点とか書いてますけど、半分くらいは仕方のないことです。
結城本は対象リファクタリングが少ない、とか入門書っていうコンセプトを考えたら仕方ないことだし。Fowler本だってコードが一部簡略されてたりするけど、それでもそんなに差支えないし。
なので悪い本という意味ではありません。
ただ自分はFowler本よりも結城本をお勧めします。
確かにFowler本は種類も多いですし、何よりFowlerはリファクタリングの権威です。
しかし初心者にFowler本は厳しい・・・。オブジェクト指向をよく知ってないといけないし、1つ1つのリファクタリングに対する説明も少ない気がします。
なので入門、リファクタリングをとりあえず知りたい人用=結城本
リファクタリングのリファレンス=Fowler本
と自分は考えています。
ちなみに
リファクタリングの習得=使う、実戦
だと思ってます。どうしても本だけじゃ・・・ね。
ちなみに現在研究で色々なOSSのリファクタリングを調べていますが、現実は本のように甘くないです。ほんと、本はあくまで入門、参考・・・ですね。
コメントを残す