我有一个由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违规行为,也无法更改容差。
答案 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