我有大約11功能看起來像這樣:許多非常相似的功能,意大利麪代碼修復?
def pending_acceptance(order_fulfillments)
order_fulfillments.each do |order_fulfillment|
next unless order_fulfillment.fulfillment_time_calculator.
pending_acceptance?; collect_fulfillments(
order_fulfillment.status,
order_fulfillment
)
end
end
def pending_start(order_fulfillments)
order_fulfillments.each do |order_fulfillment|
next unless order_fulfillment.fulfillment_time_calculator.
pending_start?; collect_fulfillments(
order_fulfillment.status,
order_fulfillment
)
end
end
迭代始終是相同的,但next unless
條件是不同的。如果你想知道:它的next unless
和;
在裏面,因爲RuboCop在抱怨它。有更好的實施方案嗎?我討厭這個意大利麪代碼。喜歡的東西傳遞到條件「iterate_it」功能或使...
編輯:不能只是通過另一個參數是因爲條件是雙有時:
def picked_up(order_fulfillments)
order_fulfillments.each do |order_fulfillment|
next unless
order_fulfillment.handed_over_late? && order_fulfillment.
fulfillment_time_calculator.pending_handover?
collect_fulfillments(
order_fulfillment.status,
order_fulfillment
)
end
end
EDIT2:但有一個問題:我怎麼能切一個符號,從狀態獲得用戶角色?例如: :deliverer_started => :deliverer or 'deliverer'
?
:傳遞一個參數並使用該參數作爲條件。通過使用這種方式,你將不得不使用1個功能,而不是11 –
檢查https://codereview.stackexchange.com/,也:) – Felix