Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何纠正来自reek的重复方法调用_Ruby On Rails_Reek - Fatal编程技术网

Ruby on rails 如何纠正来自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

如何纠正以下调用中来自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

对于使用params散列的代码,您应该认识到
params[:some]
params.[](:some)
相同。因此,Reek假设您在对象(
参数
)上重复调用相同的方法(
:[]

在params散列的情况下,这个警告看起来有点愚蠢,因为散列键查找非常快。但是,要更正此问题,可以将
params[:some]
值指定给局部变量:

some = params[:some]

if some == 'Action1'

elsif some == 'Action2'

elsif some == 'Action3'

elsif some == 'Action4'
尽管性能的提高很小,但这段代码(可以说)更可读,更易于维护


请记住,虽然简单地修复报告的问题是有帮助的,但代码度量的真正威力在于它们将您的注意力集中在代码中的问题区域,从而使您有机会重新思考您的方法。消除或重构代码气味比仅仅修补代码来平息代码度量投诉要好

你能解释一下这个函数的上下文吗?