「if文」「case文」どっちがいいの?

みなさんこんにちは!
イザナギです!
さて今回は、プログラミングに関するちょっとした話題です。
私はプログラミングをしている最中に、ちょっと悩むことがあります。
それは「if文とcase文どっちを使えばいいの?」という悩みです。
「どっちでもいいじゃん!」と思う方もいるかもしれませんが、正味どちらがどういうメリットがるのでしょうか?
まあ、確かに「case文」の方が綺麗にかけたり「if文」の方が書きやすかったりなどあると思います。
なので、今回は「if文」と「case文」について調べていきたいと思います。
コードはRubyのコードで書いていきたいと思います。

「if文」について

if文といえば


if (条件式・条件) then  
 (処理の内容)
else if (条件式・条件) then 
 (処理の内容)
else
 (処理の内容)
end

こんな感じでかけますよね!
コードの一番初めは、(条件式・条件)が真(つまり、条件式・条件があっている)であれば下の(処理の内容)が実行されてから、if文が終了します。


if (条件式・条件) then  (処理の内容)

もし、真ではなかったら次の処理が実行されます。


else if (条件式・条件) then 
 (処理の内容)

それも真ではなかったら最後の「else」ないの処理が実行されます。


else
 (処理の内容)
end

例えば、テストの点数で満点:100点、平均:50点、赤点:30点だとすると


result = 80

if result == 100 then  
 print("満点です!")
else if result >= 50 then 
 print("平均点以上です")
else if result >= 30 then 
 print("平均点以下です")
else if result < 30 then
  print("赤点未満です")
else
 print("エラーです")
end

という感じになりますね。
これだと、「平均点以上です」と出力されます。
これだと、以下のコードを後ろに繋いでいけば何個でも条件式を立てることも可能ですよね。


else if (条件式・条件) then 
 (処理の内容)

また、「unless文」という条件式・条件が「偽」の時に処理を行うという「if文」の反対みたいな処理をする文もあります。 
これもどっちを使うか迷っちゃいますよね!
しかし、どちらも条件を付け加えていくとコードが長くなってしまいますよね。

「case文」について

case文(swich文など)は以下のようにかけます。


case (変数・式) when 条件   (処理の内容) else   (処理の内容) end

先ほどの例でcase文をかくと以下のようになります。


result = 80 
case result
    when 100 print("満点です!")
    when 50..100 print("平均以上です!")
    when 30..50 print("平均以下です!")
    when 0..30 print("赤点です!")
    else ( 処理の内容 )
end

こちらも、条件式が多くなってくるとコードが長くなってきますが、「if文」よりなんとなく処理の内容がみやすくなっている気がします。

結局どっちがいいの?

結局どちらが良いのでしょうか?
この疑問をプログラマーとして活躍されている方にも聞いてみましたが、

  1. 人の好みで変わる
  2. 可読性で考える

などと言われました。
可読性はもちろんあった方がいいけれど、プロの方でも人の好みによって左右されているらしいですね。
一応ネットの方で「if文」と「case文(この実験ではswitch文)」の処理速度を調べてみたらしいです。
言語はJavaScriptで行いました。結果はif文の方が処理速度が早いらしいです。
「じゃあ、if文でよくない?」と思う方もいると思いますが、case文でも

  1. 可読性が高い
  2. 処理を適切に書ける

などのメリットがありますので、使い分けが大事であるわけですね!
なので、今回私が調べたことを私なりにまとめると

  1. 処理速度を求めるのであれば「if文」
  2. 業務などで可読性が求められるのであれば「case文」

だと感じました。
プロの方もどっちを使うかを好みで選んでいる場合もあると聞きましたので、私もなれまでは書きやすい方で書いていこうと思います!
それでは、今回はここで筆を置かせていただきます。
最後まで記事をご覧いただきありがとうございました!

■関連記事(精度そんな良くないかもwww)

■関連トピック

2023 - Izanagi's Site