未选择重构时的情况

Vic*_*tor 0 ruby ruby-on-rails

这是Rails/Ruby.只是想知道是否有DRYer版本来删除以下代码中的重复:

case params[:order]
when 'rating_ascend'
  order = {:order => 'rating_average ASC'}
when 'rating_descend'
  order = {:order => 'rating_average DESC'}
when 'distance'
  order = {:order => 'distance ASC'}
else
  order = {:order => 'distance ASC'}
end
Run Code Online (Sandbox Code Playgroud)

谢谢.

Ser*_*sev 5

或者当然,有.

order = case params[:order]
  when 'rating_ascend'
    {:order => 'rating_average ASC'}
  when 'rating_descend'
    {:order => 'rating_average DESC'}
  else
    {:order => 'distance ASC'}
end
Run Code Online (Sandbox Code Playgroud)

甚至这个(我不会这样写,但这是DRYer)

order = {:order => case params[:order]
  when 'rating_ascend' then 'rating_average ASC'
  when 'rating_descend' then 'rating_average DESC'
  else 'distance ASC'
end}
Run Code Online (Sandbox Code Playgroud)

当您简化代码到此时,您会注意到您有双倍的"距离ASC"结果.这是拼写错误还是故意的?