Rails

【Rubocop】Style/HashLikeCase Consider replacing case-when with a hash lookupの解決方法

Rails

 

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

Rails
【Rails】コード整形ツール「RuboCop」の導入・設定方法を初心者向けにまとめてみたRubyコードの自動整形ツール「RuboCop」の導入、設定方法について初心者向けに解説しています。綺麗なコード、お手本のコードを理解する上でも非常に参考になるツールですので、ぜひこの機会に導入しておきましょう。...

この記事の内容
  1. 原因
  2. 解決方法
  3. まとめ
  4. 参考

原因

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文のように何かを繰り返すコードはできるだけ避けた方が良さそうですね。