2

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
4

1 に答える 1

0

params[:some]params ハッシュを使用するコードについては、 と同じであることを認識する必要がありますparams.[](:some):[]このため、Reek は、オブジェクト ( ) に対して同じメソッド ( ) を繰り返し呼び出していると想定していますparams

params ハッシュの場合、ハッシュ キーの検索は非常に高速であるため、この警告は少しばかげているように見える場合があります。params[:some]ただし、これを修正するために、値をローカル変数に割り当てることができます。

some = params[:some]

if some == 'Action1'

elsif some == 'Action2'

elsif some == 'Action3'

elsif some == 'Action4'

パフォーマンスの向上は最小限ですが、このコードは (ほぼ間違いなく) 読みやすく、保守が容易です。

報告された問題を修正するだけでも役に立ちますが、コード メトリクスの真の力は、コード内の問題領域に焦点を当て、アプローチを再考する機会を与えることにあることを覚えておいてください。コードの臭いを除去またはリファクタリングすることは、単にパッチを適用してコード メトリクスの苦情を鎮めるよりも優れています。

于 2013-11-19T12:31:43.903 に答える