evalを実行時からパース時へ(Move Eval from Runtime to Parse Time)

◯ 適用すべき時

 evalを使わなければならないが、evalの実行回数を減らしたい。

◯ テストコード

# rspec

describe Person do
  before do
    class EmployeeNumberGenerator; end
  end
  let(:person){ Person.new }

  describe 'initialize' do
    before do
      EmployeeNumberGenerator.stub(:next).and_return(1)
    end
    it{ person.emails.should == [] }
    it{ person.employee_number.should == 1 }
  end
end

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