收紧 Ruby 代码,制作小方法
Tightening Up Ruby Code, Making Small Methods
我有一个方法被 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 违规保持活动状态,也不能更改容差。
这将减少 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
我有一个方法被 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 违规保持活动状态,也不能更改容差。
这将减少 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