私は本当に不十分に書かれたメソッドをリファクタリングしようとしています。このメソッドは、次のようなバランス ハッシュを含む配列をスキャンすることを目的としています。
{ amount: $123, month_end: '2013-01-31' }
同じ月末のすべての残高を返し、金額を合計します。
def monthly_total(month)
balances = [ balance_1, balance_2 ]
# get and array of balances
balances_for_month = balances.select do |balance|
balance.month_end == month
end
# grab only the balances for the desired month
balance_amounts = balances_for_month.map do |balance|
balance.amount
end
#take all the balances for the month and sum them.
balance_amounts.inject{|sum,x| sum + x }
end
しかし、これを行うためのより洗練された方法が必要です。新しい配列を作成してそれらをループするのではなく、元の配列を 1 回ループするようにこのメソッドを再構築するにはどうすればよいですか?