Я хочу превратить эти три метода в один, но в данный момент я не могу обернуть это вокруг себя. Осложняется тем, что 1/3 требует немного другого звонка. Все они достаточно похожи, и я знаю, что есть лучший способ, но сейчас он выходит за рамки моих навыков. Передав одну дополнительную переменную (извлекать, проверять или обрабатывать), я могу превратить ее в одну. Как это сделать, ускользает от меня.
Если бы вы реорганизовали их в один метод, как бы вы это сделали?
def fetch(subjects = current_subjects, queues = QUEUES)
subjects.each do |s|
queues.each { |x| fetch_results(x, s) } unless queue.nil?
end
end
def check(subjects = current_subjects, queues = QUEUES)
subjects.each do |s|
queues.each { |x| check_results(s["#{x}_recent"]) } unless queue.nil?
end
end
def process(subjects = current_subjects, queues = QUEUES)
subjects.each do |s|
queues.each { |x| process_results(s["#{x}_recent"]) } unless queue.nil?
end
end
РЕДАКТИРОВАТЬ: одно решение близко к тому, о чем я думал ранее, но я не дал понять, что хочу передать what
в виде небольшого массива, который может быть расширяемым и может использоваться для указания получить, проверить или обработать или любую их комбинацию. Итак, по сути, я пытаюсь перебрать три вещи одним методом:
- действие, которое: I.E., получить, проверить или обработать.
- любое количество предметов.
- любое количество очередей, которое на данный момент является константой.
Также, другие решения здесь:
http://refactormycode.com/codes/2002-three-into-one