パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法
- 作者: ジョシュア・ケリーエブスキー,小黒直樹,村上歴,高橋一成,越智典子
- 出版社/メーカー: 日経BP社
- 発売日: 2005/08/04
- メディア: 単行本
- 購入: 11人 クリック: 313回
- この商品を含むブログ (130件) を見る
オブジェクト指向における再利用のためのデザインパターンとリファクタリング―プログラムの体質改善テクニック (Object Technology Series)を読んだ人なら読む必要はないが、
これらを読んでいなくて、かつ「リファクタリングってメソッドの抽出がほとんどで新しいクラスを作ってコードを構造化するなんてやったことないなぁ」という人には良いと思う。
前半は
・何故リファクタリングが必要か
・どんなときにやるべきか
といった概論を述べている。後半はリファクタリングカタログ。
前半のまとめは↓
・上流設計でパターンを使うことは稀。明らかに使った方がいい場合だけ使う
・パターンの実装方法は沢山ある。クラス設計は状況に合わせて変えること
・ほとんどのメソッドは5行以内になるようにすること。たまに10行程度のメソッドがあっても良い
・リファクタリングのときにテストも作り直した方がいい場合がある
この中で一番驚いたのが「ほとんどのメソッドは5行以内になるようにすること」という主張。
自分の場合はほとんどのメソッドが30行以下でたまに50行程度のメソッドがある、という構成にすることが多かったので5行にはびびった。
短すぎじゃない?と思ったが最近試しに1メソッド5行以内を意識してプログラムを書いている。
その効果は・・・まあそれほど変化は感じないかな?
メリットは
・ローカル変数が多いとメソッド間での変数の受け渡しが面倒なので極力減らすようになった。
・スコープ内にある変数の数が減ってコードが理解しやすくなった。
デメリットは
・実行される行がどんどん飛ぶので追うのが大変になる
rubyの場合はメソッド内でメソッドを宣言できるんだっけ?
そうすると、例えばメソッド1内で宣言したメソッド2のスコープはメソッド1内に限られるので、よりわかりやすくなっていいなぁ。今度やってみよう。