フィールドの移動(Move Field)

適用すべき時

フィールドが、自分のクラスよりも他クラスからよく使われている。

テストコード

describe Account do
  let(:type){ 'normal' }
  let(:account_type){ AccountType.new(type) }
  let(:days_overdrawn){ 0 }
  let(:interest_rate){ 0.5 }
  let(:account){ Account.new(account_type, days_overdrawn, interest_rate) }

  describe 'initialize(account_type, days_overdrawn, interest_rate)' do
    it{ account.instance_variable_get(:@account_type).should == account_type }
    it{ account.instance_variable_get(:@days_overdrawn).should == 0 }
    it{ account.instance_variable_get(:@interest_rate).should == 0.5 }
  end

  describe 'interest_for_amount_days(amount, days)' do
    let(:amount){ 100 }
    let(:days){ 365 }
    subject{ account.interest_for_amount_days(amount, days) }
    it{ should == 50 }
  end
end

※参考資料
 リファクタリング:Rubyエディション