条件分岐はif文だけにあらず!Switchを使い倒す。
  • facebookページ
  • twitterページ
  • 2019.09.10

    条件分岐はif文だけにあらず!Switchを使い倒す。

    プログラミングを覚えて間もない頃、条件分岐をif文だけに頼ってほぼすべてのプログラミングをif文で作ろうとした記憶ありませんか?それでも出来ないことは無いので個人で使う分には問題無いかもしれません。でもコードの量が増えるにつれ、修正などでそのコードを後に見直す必要が出てきた場合にすごく見難いというか「なにこれ、誰がこんなの作ったの…」となってしまいます。これを俗にスパゲッティコードと呼びますが、こういった緊急事態に陥らないように最初のうちにもう一つの条件分岐も覚えておきましょう。因みにswitch文は人によってswitch-case文という人もいますが言い方が違うだけで中身は一緒です。

    基本的な記述ルール

    switch文の構文は次のように記述します。

    条件には基となる式を入れます。”case”にはマッチする条件を記述します。条件の終わりには”:”を記述し忘れないように注意してください。

    式が一致した時の処理を記述し終えたら最後に”break;”を記述し次のcaseに移行します。
    ここで注目してもらいたいのは”default”にはbreakが無いことです。プログラミングの基本的な流れとして上から下の行へ順番にコードを処理するというルールがありますが(カプセル化などをしていない場合の基本的な処理順)、switch文にも当然そのルールは適用されますのでcaseには必ずbreakが必要となります。しかしdefaultはswitch文の最後の行に当たる為breakを付ける必要がありません。

    またcaseについては次のように記述することも出来ます。

    このようにcaseをまとめて記述することも出来ます。

    実際に記述してみる

    次のコードを見てください。

     

    実行結果

    これはint型の変数を宣言しswitch文で分岐処理をする単純なコードであり、実行結果は「2です。」となります。先ほどbreakについての注意を書きましたが、次のコードでは上のコードからbreakを取ってみます。

     

    実行結果

    このように、breakを取り外すと最初に実行されたcaseより下にある条件が全て無評価で実行されてしまいます。

    ポテパンダの一言メモ

    条件に使用できる型には制限があり、その制限は次の通りとなります。
    byte型、short型、int型、char型、String型(Java7から)、enum型

    続いてエラーについてご説明します。
    次のコードを見てください。

    このコードを実行するとコンパイルエラーとなります。これは式と値の型が一致していない為です。このほかにも式または値に”null”がある場合、実行時エラー(NullPointerException)となります。では次にもう一つ見てみましょう。

    switch文ではcaseに重複する値がある場合コンパイルエラーが発生します。よって上のコードの実行結果はエラーとなります。

    if文との大きな違いとしてこれらの仕様が挙げられます。条件分岐を重ねていくと人的ミスでエラーが起きやすくなりますが、このようにswitch文を使い分けることで、人的ミスが起こりにくいコードを記述することができるのはswitch文のメリットと言えるでしょう。

    便利な使い方

    Javaもいよいよ12が実装されましたが、このJava12の実装によりswitch文にも新たな機能が実装されました。
    ここではその新機能についてご紹介します。

    複数case

    次のコードを見てください。

    Java12の実装により、caseに複数の値をセットすることが可能となりました。
    以前のVer.でこれを実行すると「multiple case labels are a preview feature and are disabled by default.」となりコンパイルエラーとなっていたので、非常に便利な機能です。

    アロー構文

    “->”の記号(アロー記号)を利用できるようになりました。この記号を利用することでcaseの後に付くコロンとbreakを省略することが出来るようになります。
    記述方法としては以下の通りとなります。

    またブロックを使うことで複数行に渡り処理を行うことも可能です。
    記述方法は以下の通りです。

    まとめ

    今回はswitch文について説明しました。
    条件分岐という基本的なものにはなりましたが、if文とswitch文の使い分けが明確に分からない方のお役に立てればと思います。

    switch文を使うことで、非常にすっきりしたコード作りが出来るようになりますし、何より人的ミスを減らすことにも繋がりますので仕事で複数の開発者がいる場合などには出来る限りスパゲッティコードは避けなくてはなりません。そのためにも基本であるが故に確実にマスターしておきたいものでもあります。



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

    この記事をシェア

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









    ABOUT US

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

    READ MORE