2013-08-27 36 views
2

我有以下錯誤:臭佬錯誤RepeatedConditional

tests @action.placed.!=(true) at least 3 times (RepeatedConditional) 

從下面的代碼生成:

def left 
     super unless @action.placed != true 
    end 

    def right 
     super unless @action.placed != true 
    end 

    def move_forward 
     super unless @action.placed != true 
    end 

如何將我們擺脫這種重複的?

回答

0

別名是否會工作?

alias :right :left 
alias :move_forward :left 
+0

別名與他所擁有的代碼不太一樣。認爲代碼看起來很相似,對super的調用就是調用不同的方法 –

0

我覺得這個解釋最好:https://github.com/troessner/reek/blob/master/lib/reek/report/code_climate/code_climate_configuration.yml#L619。因爲你的對象多次檢查相同的條件,所以它可能假設2個對象的作用並且缺少抽象。

解決方案可能會創建2個類,其中@action.placed始終爲真,其中一個並非總是如此。另一個可能是將邏輯向上移動。或者也許只是將這些方法合併爲一個。理想情況下,目標是隻需檢查一次該條件。