我正在考慮改進以下課程的方法,它發生在我身上:在初始化期間調用實例方法的方式很差嗎?在初始化過程中調用實例方法的時候表單不好?
最初我有方法set_last_updated_on作爲「run」方法的第一行,它可能會保留在那裏,但問題仍然如上所述。
class FinancialUpdateService
def initialize(stock)
@stock = stock
set_last_updated_on
end
def run
fetch_latest_financial_data
remove_duplicate_data
store_latest_financial_data
end
private
def set_last_updated_on
@last_updated_on = @stock.financials.first.date.to_date
end
def fetch_latest_financial_data
@latest_financial_data = StockDataApi.new(@stock.symbol, {start_date: @last_updated_on, end_date: Date.today-1}).financial_history
end
def remove_duplicate_data
@latest_financial_data.delete_if { |data| data[:date].to_date <= @last_updated_on}
end
def store_latest_financial_data
@latest_financial_data.each do |d|
@stock.financials.create(adj_close: d.fetch(:adj_close), close: d.fetch(:close),
date: d.fetch(:date).to_time, high: d.fetch(:high), low: d.fetch(:low), open: d.fetch(:open),
volume: d.fetch(:volume))
end
end
end
初始化初始化對象,因此調用私有方法設置狀態是非常正常的。不過,我會努力簡化初始化程序。 – Kris 2015-03-02 22:30:16