💂

【備忘録】Railsで使う書き方⑤~後置ifとガード節~

2022/06/04に公開

この記事の5回目になります。

https://zenn.dev/adverdest/articles/c8bf3fa1ed1b7f

今回は後置ifとガード節について扱います。

後置if

Rubyのif文は修飾子として文の後ろに置くことができます。
if修飾子は後置ifと呼ばれることもあります。

sample.rb
 point = 7
 day = 1
 if day == 1
   point *= 5
 end
 point #=> 35

上のコードは後置ifを使用することで次のように書くことができます。

sample.rb
 point = 7
 day = 1
 point *= 5 if day == 1
 point #=> 35

1行で書けるのでコードを短縮することができますが、次の記事にある通り、
使用には注意が必要です。

https://qiita.com/jnchito/items/4e47559a4c821474233a

ガード節

ガード節は条件分岐のネストを深くしないための技法の一つです。
具体的に言うと、関数が主に例外的な条件で例外的な値を返すのであれば、処理の冒頭部分で条件判断とreturnを行って例外処理を完結させ、メインの処理に影響を与えないようにすることです。

https://techracho.bpsinc.jp/hachi8833/2016_10_11/26950

次のようなコードです。

sample.rb
def service_status
    return nil unless service_started?
    (他の処理)
end

事前処理する例外の数が多いほど有効になります。
ちなみにガード節の後のは1行空けておくことが主流らしいです。
(Rubocopでガンガン指摘されます)

Rubocop

Rubyのコードの静的解析を行うRubocupで指摘を受けることが多いです。

https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/IfUnlessModifier

修正できるのであれば修正しています。
  (オフにもできます。)

参考文献

プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで

Discussion