今回はRubocopにStyle/HashLikeCase Consider replacing case-when with a hash lookupで弾かれる際の解決方法について解説したいと思います。この機能はRubocop0.88.0で追加されたものであるため、知らない方も多いのではないでしょうか?

原因
Style/HashLikeCase Consider replacing case-when with a hash lookupで弾かれてしまう原因は、わざわざcase文で書かなくても良い箇所を、case文で記述していることが原因です。
例を見てみましょう。
以下の記述は一見すると良さそうに見えますが、case文をわざわざ用いなくても記述できるためRubocop的にはNGです。
case country
when 'europe'
'http://eu.example.com'
when 'america'
'http://us.example.com'
when 'australia'
'http://au.example.com'
end
参考:Class: RuboCop::Cop::Style::HashLikeCase
このようにcase文を不用意に用いてしまうことが、Rubocopに弾かれる原因です。
解決方法
では実際に解決方法を見ていきましょう。
解決方法はいたってシンプルです。case文を用いないようにしましょう。
例えば先ほど例に挙げたコードをcase文を使わずに記述すると、以下のようにハッシュ形式で記載することができます。
SITES = {
'europe' => 'http://eu.example.com',
'america' => 'http://us.example.com',
'australia' => 'http://au.example.com'
}
SITES[country]
今後case文を記述する際は、このようにハッシュ形式で記述できないか確かめましょう。
まとめ
- Style/HashLikeCase Consider replacing case-when with a hash lookupの原因は不用意なcase文
- 解決策としてはハッシュ形式を用いる
参考
New cop to suggest replacing case/when with hash lookup:
https://github.com/rubocop-hq/rubocop/issues/8247
Class: RuboCop::Cop::Style::HashLikeCase:
https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/HashLikeCase
今回はStyle/HashLikeCase Consider replacing case-when with a hash lookupで弾かれる際の解決方法について解説しました。case文のように何かを繰り返すコードはできるだけ避けた方が良さそうですね。