「Ifの迷宮」から脱出せよ!VB.NETの『Select Case』でコードを究極に洗練させる技術
こんにちは。現場で長年コードの海を泳いできたエンジニアです。
皆さんは、こんな経験はありませんか?
「条件分岐が増えすぎて、`If`、`ElseIf`が画面を埋め尽くし、どこで何が起きているのか分からなくなった……」
マクロの記録から一歩踏み出したばかりの頃、誰もが通る道です。しかし、今日でその「迷宮」とはお別れしましょう。`Select Case`文と「Is」キーワードを使いこなせば、あなたのコードは驚くほどエレガントに生まれ変わります。
—
なぜ「If文の羅列」が危険なのか?
初心者が陥りやすいのが、条件をすべて`If`で書いてしまうこと。
‘ 【反面教師】読みにくく、拡張性に乏しいコード
If score >= 0 And score < 60 Then
result = "不可"
ElseIf score >= 60 And score < 70 Then
result = "可"
ElseIf score >= 70 And score < 80 Then
result = "良"
' ...以下続く
これの何が問題か? それは「条件の重複リスク」と「可読性の低下」です。どこか一つでも論理演算子(And/Or)を書き間違えたら、バグの温床になります。修正するたびに胃が痛くなるようなコードは、今日で卒業です。
—
救世主:Select Case 文の「範囲指定」と「Is」
`Select Case`は、特定の変数の値を「どのケースに当てはまるか」で振り分けるための強力な制御構文です。特に、数値の範囲を扱う際に真価を発揮します。
基本の構文
Select Case score
Case Is < 60
result = "不可"
Case 60 To 69
result = "可"
Case 70 To 79
result = "良"
Case Is >= 80
result = “優”
Case Else
result = “エラー”
End Select
ここがポイント!
- `Is`キーワード: 「比較演算子(<, >, <=, >=, <>, =)」を使いたいときに必須のパスポートです。
- `To`キーワード: 「60 To 69」のように、直感的な範囲指定が可能です。
- `Case Else`: 想定外の値が入ったときの「安全装置」です。これがあるだけで、プログラムの堅牢性が段違いになります。
—
実践!現場で使える「条件の組み合わせ」テクニック
さらに一歩進んだ使い方も覚えましょう。`Select Case`は、カンマで区切ることで「または(OR)」の条件をスマートに記述できます。
‘ 曜日によって処理を変える例
Dim dayOfWeek As String = “土”
Select Case dayOfWeek
Case “月”, “火”, “水”, “木”, “金”
Console.WriteLine(“平日です。仕事に励みましょう。”)
Case “土”, “日”
Console.WriteLine(“週末です。ゆっくり休みましょう。”)
Case Else
Console.WriteLine(“正しい曜日を入力してください。”)
End Select
このように、複数の値をひとまとめにできるため、コードの行数を劇的に削減できます。これができると、後から「祝日を追加したい」といった仕様変更にも瞬時に対応できるようになります。
—
初学者が陥りやすい罠と対策
1. 「Is」を書き忘れる
`Case < 60` と書こうとしてエラーになる人が非常に多いです。VB.NETでは、比較演算子を使うときは必ず `Case Is < 60` と書くルールを覚えておいてください。
2. 条件のオーバーラップ(重複)
`Case 0 To 100` の後に `Case 80 To 120` と書くと、80〜100の数値がどちらで判定されるか迷います。`Select Case`は上から順番に判定し、最初に一致したケースだけを実行するというルールがあります。範囲を書くときは、重なりがないか注意深く設計しましょう。
—
最後に:なぜ「書き方」にこだわるのか?
エンジニアにとって、コードは「コンピュータへの命令」であると同時に、「未来の自分や仲間への手紙」でもあります。
複雑な`If`の迷宮を整理して、誰が見ても一瞬でロジックが理解できる`Select Case`に書き換える。その小さな工夫が、結果として「バグのない堅牢なシステム」を作り上げます。
「ここをクリアすれば、VB.NETの基本はバッチリですよ」
まずは今書いているコードの中で、`ElseIf`が3つ以上並んでいる箇所を探してみてください。そこが、あなたのコードをプロレベルに引き上げる最初のステップです。
次回の記事では、さらに深い「オブジェクトのライフサイクル」の話でお会いしましょう。あなたのコードが、今日も軽やかに動くことを祈っています!
