JavaScript - if文とswitch文、「使い分け」の基準は?

JavaScript - の条件分岐には if 文と switch 文があります。

if 文を使う場合が多いと思いますが、 多重分岐の場合は switch 文を使った方が、コードがわかりやすくなるケースもあります。

ここでは、if 文と switch 文の「使い分け」について説明します。

「switch 文」は軽視されている?

多くの方にとって、「条件分岐といえば if 文」というイメージがあると思います。

実際、書籍等でも if 文の解説に多くのスペースがさかれ、 switch 文はif 文の後に「こういった方法もありますよ」程度の扱いをされています。

swich 文は使い方によっては、 プログラムの可読性やスピードがアップする便利な道具となってくれます。

「if 文」を使った方がよいケース

2分岐は言うまでもなくif 文を使いますが、 多重分岐でも else if 句が少なければ if 文を使うといいでしょう。

「switch 文」を使った方がよいケース

多重分岐で else if 句がいくつもつながる場合は、 「switch 文」を使った方が見やすくなります。

例として、 else if 句が多くある多重分岐のコードです。


if (num == 0){
	// 処理
} else if (num == 1){
	// 処理
} else if (num == 2){
	// 処理
} else if (num == 3){
	// 処理
} else if (num == 4){
	// 処理
} else if (num == 5){
	// 処理
} esle {
	// 処理
}

これを switch 文で書くと次のようになります。


switch(num){
	case 0:
		// 処理
		break;
	case 1:
		// 処理
		break;
	case 2:
		// 処理
		break;
	case 3:
		// 処理
		break;
	case 4:
		// 処理
		break;
	case 5:
		// 処理
		break;
	default:
		// 処理	
}

switch 文の方が、break文がある分だけ見た目が長くなっていますが、 全体的にはプログラムが見やすくなります。

case 句に続く式は定数値が良い

JavaScriptでは、case 句に続く式として定数値以外の任意の式を記述できます。

ですが、「代入」のような副作用のある式を記述するとロジックがわかりにくくなるためお勧めしません。

先程記述した switch 文では case 句に続く式として「数値リテラル」を使用しました。

このように switch文では case 句に続く式として、 数値リテラルや文字列リテラルに限定することをおすすめします。

まとめ

if 文と switch 文を使い分ける「明確な数値基準」はありませんが、 「else if 句」が多くなった場合は、switch 文で記述することも検討してみてください。