Reek错误重复条件

时间:2013-08-27 00:44:11

标签: ruby reek

我有以下错误:

  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

我们如何摆脱这种重复?

2 个答案:

答案 0 :(得分:0)

别名是否有效?

alias :right :left
alias :move_forward :left

答案 1 :(得分:0)

我认为这最能解释:https://github.com/troessner/reek/blob/master/lib/reek/report/code_climate/code_climate_configuration.yml#L619。因为你的对象多次检查相同的条件,所以它可能扮演2个对象的角色并且缺少抽象。

解决方案可能是创建两个类,一个@action.placed始终为真,另一个不总是真。另一个可能是提升逻辑。或者可能只是将这些方法组合成1.理想情况下,目标只是必须检查一次。