2015-08-22 17 views
-2

哪一種更有效?案例I或II?before_filter或者if檢查使用params [:action]哪一個是有效的?

案例一:

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 

案例二:

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

效率方面,應該沒有明顯的差異。這是您應該關心的可讀性/可維護性。 –

回答

1

案例1更有效,但不是因爲它更快地運行。您可以確定benchmark them,但它們幾乎可以肯定具有非常相似的資源要求。

原因1效率更高是因爲它減少了開發者的壓力。例如,它更明顯地表達了你的意圖。它可以更有機地增長,編寫測試更容易。案例2所增加的複雜性會使測試和長期維護變得更加困難,從而對項目產生負面影響。

+2

更容易編寫測試?這兩種情況都是'before_action'。玩得開心爲那些寫測試:) –

+0

更容易,是的。在情況2中,爲了測試驗證方法,必須建立更多的狀態。單獨測試驗證器和解析器方法將導致整體設置更簡單。它應該足以獨立地測試這些方法,並驗證在命中時調用方法(如果需要)。這也提高了測試記錄代碼的能力。 –

+0

@SergioTulentsev你似乎寫了一個非常類似的意見,因爲我正在寫這個答案... –

相關問題