日々精進

新しく学んだことを書き留めていきます

パターン指向リファクタリング入門

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法

オススメ度★★★☆☆
オブジェクト指向における再利用のためのデザインパターンリファクタリング―プログラムの体質改善テクニック (Object Technology Series)を読んだ人なら読む必要はないが、
これらを読んでいなくて、かつ「リファクタリングってメソッドの抽出がほとんどで新しいクラスを作ってコードを構造化するなんてやったことないなぁ」という人には良いと思う。


前半は
・何故リファクタリングが必要か
・どんなときにやるべきか
といった概論を述べている。後半はリファクタリングカタログ。
前半のまとめは↓


・上流設計でパターンを使うことは稀。明らかに使った方がいい場合だけ使う
・パターンの実装方法は沢山ある。クラス設計は状況に合わせて変えること
・ほとんどのメソッドは5行以内になるようにすること。たまに10行程度のメソッドがあっても良い
リファクタリングのときにテストも作り直した方がいい場合がある


この中で一番驚いたのが「ほとんどのメソッドは5行以内になるようにすること」という主張。
自分の場合はほとんどのメソッドが30行以下でたまに50行程度のメソッドがある、という構成にすることが多かったので5行にはびびった。
短すぎじゃない?と思ったが最近試しに1メソッド5行以内を意識してプログラムを書いている。
その効果は・・・まあそれほど変化は感じないかな?
メリットは
・ローカル変数が多いとメソッド間での変数の受け渡しが面倒なので極力減らすようになった。
・スコープ内にある変数の数が減ってコードが理解しやすくなった。
デメリットは
・実行される行がどんどん飛ぶので追うのが大変になる


rubyの場合はメソッド内でメソッドを宣言できるんだっけ?
そうすると、例えばメソッド1内で宣言したメソッド2のスコープはメソッド1内に限られるので、よりわかりやすくなっていいなぁ。今度やってみよう。