收紧Ruby代码,制作小方法

时间:2015-07-17 10:00:38

标签: ruby coding-style rubocop

我有一个由RuboCop报告的方法太长:每个方法只允许七行。这是违规方法:

def on(definition, visit = false, &block)
  if @active.is_a?(definition)
    block.call @active if block
    return @active
  end

  @active = definition.new
  @active.load if visit

  block.call @active if block

  @active
end

我打算将最高if条件转换为保护条款,但我不知道该怎么做。

我尝试将第7行和第8行合并到此:

@active = definition.new().load if visit

但绝对不行。

我无法激活RuboCop违规行为,也无法更改容差。

1 个答案:

答案 0 :(得分:5)

这将减少2行:

def on(definition, visit = false, &block)
  unless @active.is_a?(definition)  
    @active = definition.new
    @active.load if visit
  end

  block.call @active if block
  @active
end