我有一个A
类来处理错误,
我如何重构它以从调用方法中删除多个返回。
基本上,当if true
然后从error
和success
为false的方法返回时。
Class A
def call
return method1 if true/false
return method2 if true/false
return method3 if true/false
{ success: true }
end
private
def method1
{
success: false
errors: 'X Not Found.'
}
end
def method2
{
success: false
errors: 'Y Not Found.'
}
end
def method3
{
success: false
errors: 'Z Not Found.'
}
end
end
最佳答案
由于true
始终为true
,因此第一个条件将始终为true
,因此将始终执行第一个return
。因此,第一个return
之后的所有内容都只是死代码,永远不会到达。您可以将call
方法简化为此方法,它等于您的代码100%:
def call
method1
end
或者
alias_method :call, :method1
由于不再从任何地方调用
method2
和method3
,因此只需删除它们即可。由于
method1
仅从一个地方调用,即call
,因此您可以内联它,因此整个类都变成这样:class A
def call
{
success: false
errors: 'X Not Found.'
}
end
end
这相当于您的代码100%,并且在所有情况下都做完全相同的事情。 (模通过无限制的反射违反封装。)
关于ruby - 如何从Ruby方法中删除多重 yield ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62382791/