LoginSignup
2
2

More than 1 year has passed since last update.

【Ruby初心者向け】 if文とCase文を使い分けよう!

Last updated at Posted at 2021-04-30

はじめに

この記事は、Ruby/Railsの学習期間約1ヶ月の著者が書いた初投稿ものです。
謝った解釈があるかもしれませんので、その際は修正コメント等いただけると幸いです。

今回の記事は、条件分岐を学習している際に、ifcaseのどちらを使えばいいか悩んだため、これから学習を始める方々に少しでもお力になれればと思い書きました。

(※一部訂正致しました)

環境

  • macOS Big Sur 11.3
  • Rubyバージョン:2.7.2

if文について

if文は、「もし〜だったら〜の処理をする」といいった条件に一致(true)した時に処理を実行します。
イメージは複数です。
メリットは3つ
- 書きやすい
- 複数の比較対象を組み合わせることができる
- 複雑な条件を扱うのに適している

if "条件"
  p "true"
else
  p "false"
end

elseは省略可で、なくても大丈夫です。

elsifを使用して、複数の条件を書くこともできます。

if "条件"
  p "条件1がtrueの時"
elsif "条件2"
  p "条件2がtrueの時"
elsif "条件3"
  p "条件3がtrueの時"
else
  p "上記の条件に該当しないfalseの時"
end

case文について

case文は、1つの比較対象に対して複数の条件を判定する時に実行します。
イメージは単体です。 
メリットは2つ
- シンプルなコードを実現できる
- 可読性の高い書き方ができる

case "1つの比較対象"
when "値1"
  p "値1に一致"
when "値2"
  p "値2に一致"
wehn "値3"
  p "値3に一致"
else
  p "一致しない時"
end

if文とcase文の比較

ここで3つの例を比較してみましょう。

1、まずは年齢です
if文の場合

age = 20

if age >= 65
  p "高齢者です"
elsif age >= 20
  p "成人です"
elsif age >= 2
  p "子供です"
else
  p "幼児です"
end

caseの場合

age = 20

case age 
when 65..100
  p "高齢者です"
when 20..64
  p "成人です"
when 2..19
  p "子供です"
else
  p "幼児です"
end

その年齢1つに絞ることで、シンプルで可読性がありますね。

2、次に信号の色を例にしてみます。
if文の場合

color = "red"

if color == "red"
  p "止まれ"
elsif color == "yellow"
  p "注意して進むか止まれ"
elsif color == "blue"
  p "進め"
else
  "該当しません"
end

case文の場合

color = "red"

case color
when "red"
  p "止まれ"
when "yellow"
  p "注意して進むか止まれ"
when "blue"
  p "進め"
else
  p "該当なし"
end

if文はコードの量が多いですが、case文はシンプルですね。

3、時間(24時間)を例にすると...
if文の場合(訂正致しまいた)

time = 7

if (0..5) === time
  p "深夜です"
elsif (6..11) === time
  p "午前中です"
elsif (12..18) === time
  p "午後です"
elsif (9..23) === time
  p "夜です"
else
  p "そんな時間ありません"
end

case文の場合

time = 7

case time
when 0..5
  p "深夜です"
when 6..11
  p "午前中です"
when 12..18
  p "午後です"
when 19..23
  p "夜です"
else
  p  "そんな時間ありません"
end

こちらは、1つの比較対象(ここでは6という時間)に対して判定しているcase文の方がシンプルですね!

結論

if文とcase文にはどっちが正しいと言った明確なルールはなく、どちらでも使うことができます。
ただし、今回の3つの例からもわかる通り、条件によっては可読性が変わっていきます。
けれども、おおよそは比較対象の数複数(if)or単体(case)で判別することができると思います。

また、現職のエンジニアの人の話によると、使い分けは人それぞれの好みで、書きやすい方で書くのが良いとのことでした。

基本的には可読性を重視して書く事を意識するが大事だと思いました。

さいごに

今後もRuby/Railsを学習する過程で、理解を深めていき、有益な情報を発信できればと思いますので、良ければLGTMお願いします!

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2