Rubyのifとcaseの使い分けポイントを徹底解説!
  • facebookページ
  • twitterページ
  • 2021.02.25

    Rubyのifとcaseの使い分けポイントを徹底解説!

    Rubyには条件分岐を行う構文として「if」と「case」があります。

    「if」文は、条件に一致した時だけ行う処理を実装する時に使用し、「case」文は複数の候補の中から一致する条件の処理を行う処理を実装する時に使用します。

    if文とは

    「if」構文は、ある条件の時だけ特定の処理を実行したり、逆に条件に一致しなかった時に実行される処理を記述したりするなど、条件によって処理を分ける時に使用する制御構文です。

    Rubyにおける「if」文の構文は次の通りです。

    Rubyでは thenキーワードは省略してもよい事になっているため、次のようの thenを省略した書き方もできます。

    elsif構文を使用して、複数の条件式を記述することもできます。
    次の例では ifで指定した条件式1に一致しなかったこ時に、条件式2、条件式3の順に判定していき、どの条件にも一致しなかった時に、 elseブロックの中の処理が実行されます。

    case文とは

    「if」文が条件式を組み合わせて複雑な条件分岐を扱えるのに対し、「case」文は、変数や計算式の結果から一致する値の候補を探して、一致した値の処理を実行する時に便利な構文です。

    Rubyの「case」文の構文は次の通りです。

    「if」が結果が trueまたは falseになる条件式を組み合わせるのに対し、「case」は比較対象の変数などの値の候補を when <>:で1つ以上指定します。

    そして、比較対象の変数などと一致する when <>:があると、その下のコードブロックが実行されまます。 when <>:で指定された候補の値のいずれにも一致しない場合は、 elseで指定したコードブロックが実行されます。

    ちなみに case文も、 thenキーワードは省略してもよい事になっているため、次のようの thenを省略した書き方もできます。

    値の範囲、以上、以下を調べる時

    「case」文で値の範囲や、ある値以上・以下を調べる時は、 when 開始...終了のように範囲を指定できます。

    開始に nilを指定すると、終了以下の値であることを判定でき、終了に nilを指定すると開始以上の値であることを判定できます。

    ポテパンダの一言メモ

    whenで値を指定する時に、カンマで区切って複数の値を指定することも可能です。

    when 3,4,5 then

    「if」と「case」の使い分け

    「if」と「case」文は、どちらも条件分岐を行う構文で「if」文で書けることは基本的に「case」でも書くことができ、どちらを使うべきかの明確なルールは存在しません。

    では、「if」と「case」文はどのように使い分ければよいのでしょうか?

    実例のサンプルコードを用いながら、「if」と「case」文のそれぞれに適した利用シーンを見ていきましょう。

    シンプルな条件の二分岐

    まずは、条件に一致した時と、一致しなかった時で処理が分かれる二分岐で、「if」と「case」文をそれぞれ使ってみます。

    【if文】

    【case文】

    このように、シンプルな条件の二分岐であれば、「if」と「case」文どちらを使ってもコードの可読性は高くなりますが、このようなケースの場合は「if」の方が一般的に用いられます。

    ただし、上のコードが将来的にランクB,C,D…のように

    複雑な条件の二分岐

    複数の条件があるような複雑な条件の時は、多くの場合で「if」文を使用します。

    次のサンプルコードは、2つスコアが共に80点以上なら「合格」、どちらか一方が50点以上なら「再テスト」、いずれも50点未満なら「不合格」とするような条件分岐を「if」と「case」文で書いたものです。

    【if文】

    【case文】

    このように、「case」で複雑な条件を表現するとコードの可読性が悪くなりがちになるため、複雑な条件の時は「if」文を用います。

    多分岐

    多分岐とは、 if elsie elseなどを使って複数条件を記述し、条件によって3つ以上の処理ブロックに処理が分岐することを指します。

    次のサンプルコードは、ランクA、B、C、Dとそれ以外のランクにって条件分岐するコードを「if」と「case」文で書いたものです。

    【if文】

    【case文】

    このように、条件が3つ以上ある多分岐で、条件式もある程度シンプルであればな「case」文の方が可読性が高くなります。

    if, caseの使い分けは可読性を重視

    先述のように、「if」と「case」文の使い分けには明確なルールが存在しません。

    使い分けにも諸説ありますが、「if」と「case」文の使い分は、基本的にはコードの可読性や後々のメンテナンス性が高いほうを選ぶのが良いでしょう。

    さいごに

    「if」と「case」文の基本的な構文と、その使い分けについて解説してきました。

    よいプログラマ とは、可読性が高いコードを書けるのも一つの要素ですので、この記事で紹介した「if」と「case」文の使い分けを実践していきましょう。

    【関連記事】
    Rubyにおけるブロック構文(do~end)の使い方



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE