『リファクタリング』ノート3オブジェクト間移動特性MoveMethod
898 ワード
一.Move Method
動機:関数移動は再構成理論の柱である.1つのClassがあまりにも多くの動作をしている場合、または1つのClassが別のClassとあまりにも多く協力して高度な結合を形成している場合、移動関数が必要です.このような手段を通じて、私はシステムの中のClassがもっと簡単で、これらのClassは最終的にもっときれいにシステムの交付の任務を実現することができます.
クラスのすべての関数をブラウズして、自分が存在するオブジェクトを使用する回数よりも別のオブジェクトを使用する回数が多い関数を探します.値ドメインをいくつか移動したら、このようなチェックをしなければなりません.移動される可能性のある関数が発見されると、私は彼女を呼び出した一端、彼女が呼び出した一端、および継承システムのいずれかの定義関数を観察します.そして,この関数に基づいてそのオブジェクトとのコミュニケーションが多く,その移動経路を決定する.
eg.
動機:関数移動は再構成理論の柱である.1つのClassがあまりにも多くの動作をしている場合、または1つのClassが別のClassとあまりにも多く協力して高度な結合を形成している場合、移動関数が必要です.このような手段を通じて、私はシステムの中のClassがもっと簡単で、これらのClassは最終的にもっときれいにシステムの交付の任務を実現することができます.
クラスのすべての関数をブラウズして、自分が存在するオブジェクトを使用する回数よりも別のオブジェクトを使用する回数が多い関数を探します.値ドメインをいくつか移動したら、このようなチェックをしなければなりません.移動される可能性のある関数が発見されると、私は彼女を呼び出した一端、彼女が呼び出した一端、および継承システムのいずれかの定義関数を観察します.そして,この関数に基づいてそのオブジェクトとのコミュニケーションが多く,その移動経路を決定する.
eg.
class Account ...
private function overdraftCharge():Number {
if(_type.isPremium()) {
var result:Number = 10;
if(_daysOverdrawn > 7 ) result += (_daysOverdrawn -7)*0.85;
return result;
}
else {
return _daysOverdrawn * 1.75;
}
}
private var _type:AccountType;
private var _daysOverdrawn:int;