哪个是有效的before_filter或if检查使用params [:action]?

时间:2015-08-22 09:02:36

标签: ruby-on-rails

哪个更有效,案例I还是II?

案例I:

before_filter :validator, only: :test1
before_filter :parser, only: :test2

def test1
  <some code>
end

def test2
  <some code>
end

private

  def validator
    <condition1>
  end

  def parser
    <condition2>
  end

案例II:

before_filter :validator

def test1
  <some code>
end

def test2
  <some code>
end

private

  def validator
    if params[:action] == 'test1'
      <condition1>
    end

    if params[:action] == 'test2'
      <condition2>
    end
  end

1 个答案:

答案 0 :(得分:1)

案例1效率更高,但不是因为它运行得更快。您可以benchmark them确定,但他们几乎肯定有非常相似的资源要求。

#1更有效的原因是因为它减少了显影剂应变。例如,它更明显地表达了您的意图。它可以更有机地增长,并且更容易编写测试。案例2增加的复杂性将使测试和长期维护变得更加困难,从而对项目产生负面影响。