Когда блоки более полезны, чем функции (ruby)?

У меня есть два примера, дающих один и тот же результат.

С блоком:

def self.do_something(object_id)
  self.with_params(object_id) do |params|
    some_stuff(params)
  end
end

def self.with_params(object_id, &block)
  find_object_by_id
  calculate_params_hash
  block.call(params_hash)
end

и с методом:

def self.do_something(object_id)
  some_stuff(self.get_params(object_id))
end

def self.get_params(object_id)
  find_object_by_id
  calculate_params_hash
  params_hash
end

Второе решение кажется более простым, но я нашел некоторые варианты использования первого в коде нашего приложения. Мой вопрос: в какой ситуации рекомендуется первый? Каковы плюсы и минусы каждого из них?

6
задан Ryan Haining 12 July 2013 в 22:38
поделиться