if-elsif
このようなブロックがたくさんあり、else ステートメントで終わるため、構造は次のようになります。
if path.end_with?('something')
template_name = 'something.json.erb'
res.body = ERB.new(File.read(File.expand_path("../#{template_name}", __FILE__))).result(binding)
res.status = 200
res['Content-Type'] = 'application/json'
elsif path.end_with?('somethingELSE')
template_name = 'somethingELSE.json.erb'
res.body = ERB.new(File.read(File.expand_path("../#{template_name}", __FILE__))).result(binding)
res.status = 200
res['Content-Type'] = 'application/json'
# a couple more similar if-elsif blocks in here
else
res.status = 400
res['Content-Type'] = 'text/plain'
res.body = "Invalid path"
そのため、繰り返されたばかりの if-elsif のブロックを含むセクションには、多くの繰り返されるコードがあります。基本的には、template_name を設定する行だけが必要で、残りの次の 3 行を除外できるはずですが、最後に他の行があるため、それができません。
このコードをリファクタリングして、より簡潔で繰り返しの少ないコードにすることをどのように提案しますか?