10月1日の日記
今日の学び
リファクタリング: Rubyエディション
第7章は オブジェクト間でのメンバの移動 をテーマに、リファクタリングのテクニックがまとめられている。
全部で6つのテクニックが紹介されている。
- Move Method
- Move Field
- Extract Class
- Inline Class
- Hide Delegate
- Remove Middle Man
Move Method
要約
メソッドが、他クラスの機能を多く使っていたり、他クラスに何度も利用されたりしていたら、最もよく使われているクラスにメソッドを移動する
例
# リファクタリング前 class Employee def base_salary if @employee_type.manager? return 200000 else return 100000 end end end # リファクタリング後 class EmployeeType def base_salary if manager? return 200000 else return 100000 end end end
説明
- メソッドは最もよく使われているクラスに定義する
- 他クラスを参照しなくて済むので、コードが少なくなる
- 他クラスの実装を見に行かなくてよくなる
備考
- リファクタリングをしたら、必ずテストを実行する
所感
メソッドは、最もよく使われているクラスに定義するということを、恥かしながら最近知った。
しっかり考えればわかることではあるが、他クラスのオブジェクトを参照しなくてもよくなるし、他クラスの実装も見に行ったりしなくてよくなる。結果的に効率よくコードがかけるようになるなと実感した。
また Ruby はインタープリタ言語であり、リファクタリング後にコンパイルによってミスをキャッチできない。だからこそ、テストが重要であるということに深く納得した。