チーム開発力強化セミナー 〜 オブジェクト指向設計の勘所 〜
チーム開発力強化セミナー 〜 オブジェクト指向設計の勘所 〜 - ギルドワークス | Doorkeeper
に参加してきました
今回のテーマも引き続きリファクタリング。
マーティンファウラーのリファクタリングの
最初のレンタルビデオのサンプルコードをリファクタリングします。
新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)
- 作者: Martin Fowler,児玉公信,友野晶夫,平澤章,梅澤真史
- 出版社/メーカー: オーム社
- 発売日: 2014/07/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
- 動く、動かない
- 美しい、美しくない
- オブジェクト思考らしい、らしくない
というのは個人の主観が大きく入るが、
「変更コストを下げる」というのをチームとして共通の価値観、方向性とするために
どうすればよいかを考るのが大切。
印象に残ったことをメモ。
長い引数リストは改善する。
メソッドの引数が2つ以上、ある場合、引数が多すぎる。(引数は1つまで。)
あまりよい例が思いつかないけど、たとえば、
class Hoge public void hugehuge(double latitude, double longitude) { //…… Address address = Geocoder.reverse(latitude, longitude); //…… } }
ではなく、
class Hoge public void hugehuge(Position position) { //…… Address address = Geocoder.reverse(position.latitude, position.longitude); //…… } }
のほうがよく、さらに
class Hoge { private Position position = new Position(latitude, logitude); public void hugehuge() { //…… Address address = return position.reverseGeocode() //…… } } class Position { private double latitude; private double longitude; public Address reverseGeocode() { return Geocoder.reverse(position.latitude, position.longitude); } }
のほうがよい
業務の考え方を愚直にコードで表現する
今回の例では++
point++;
はプログラマーには何のことかわかるが、ビジネスサイドには理解されない。
point += 1;
とすると、ビジネスサイドにも理解できるし、+=2、+=1.5にも変更しやすい。