Ruby on rails 如何纠正来自reek的重复方法调用
如何纠正以下调用中来自reek的Ruby on rails 如何纠正来自reek的重复方法调用,ruby-on-rails,reek,Ruby On Rails,Reek,如何纠正以下调用中来自reek的DuplicateMethodCall def to_str foo.blank? ? 'Value' : foo end 我应该如何处理params[:some]我应该单独声明它 if params[:some] == 'Action1' elsif params[:some] == 'Action2' elsif params[:some] == 'Action3' elsif params[:some] == 'Action4' end
DuplicateMethodCall
def to_str
foo.blank? ? 'Value' : foo
end
我应该如何处理params[:some]我应该单独声明它
if params[:some] == 'Action1'
elsif params[:some] == 'Action2'
elsif params[:some] == 'Action3'
elsif params[:some] == 'Action4'
end
对于使用params散列的代码,您应该认识到
params[:some]
与params.[](:some)
相同。因此,Reek假设您在对象(参数
)上重复调用相同的方法(:[]
)
在params散列的情况下,这个警告看起来有点愚蠢,因为散列键查找非常快。但是,要更正此问题,可以将params[:some]
值指定给局部变量:
some = params[:some]
if some == 'Action1'
elsif some == 'Action2'
elsif some == 'Action3'
elsif some == 'Action4'
尽管性能的提高很小,但这段代码(可以说)更可读,更易于维护
请记住,虽然简单地修复报告的问题是有帮助的,但代码度量的真正威力在于它们将您的注意力集中在代码中的问题区域,从而使您有机会重新思考您的方法。消除或重构代码气味比仅仅修补代码来平息代码度量投诉要好 你能解释一下这个函数的上下文吗?