【実務・中級編】初心者向け:VB.NETの「Select Case」文における「Is」キーワードと範囲指定の活用:複数の「If-ElseIf」をスマートに整理する記述術 – Visual Basic (VB / VB.NET)解析バイブル

スポンサーリンク

「If文の迷宮」から脱却せよ:Select Caseと「Is」演算子で構築する堅牢なロジック

現場でコードを読んでいると、十中八九遭遇するのが「If-ElseIf地獄」です。

‘ 悪しき例:修正のたびにバグが混入する典型的なコード
If score >= 0 And score <= 59 Then grade = "F" ElseIf score >= 60 And score <= 69 Then grade = "D" ElseIf score >= 70 And score <= 79 Then grade = "C" ' ...(以下延々と続く) この書き方がなぜ「悪」なのか。それは、「条件の重複や漏れ」を人間が目視でチェックし続けなければならないからです。業務自動化ツールにおいて、保守性の欠如は即座に「運用中の事故」に繋がります。

今日は、VB.NETの`Select Case`を極限まで活用し、あなたのコードを「誰が見ても一瞬で理解できる」状態へと昇華させる技術を伝授します。

1. なぜ「If文」ではなく「Select Case」なのか?

結論から言えば、「値の比較」に特化しているからです。
`If`は論理判定を行うための強力なツールですが、同じ変数に対して「これか、あれか」という分岐を繰り返す場合、`Select Case`を使用する方が計算機の最適化も効きやすく、何より可読性が圧倒的に高い。

特に、`Is`キーワードを組み合わせた範囲指定は、実務における「境界値判定」のバグを劇的に減らします。

「Is」キーワードを使ったスマートな記述術

以下のコードを見てください。先ほどのIf文を書き換えたものです。

‘ 洗練されたプロフェッショナルな記述
Select Case score
Case 0 To 59
grade = “F”
Case 60 To 69
grade = “D”
Case Is >= 90
grade = “S”
Case Else
‘ 想定外の値(負の数や100以上など)をここで一元管理する
Throw New ArgumentOutOfRangeException(“スコアが範囲外です”)
End Select

ここがポイント:

  • `To`演算子: 連続する範囲を直感的に記述できる。
  • `Is`演算子: `Is >= 90` のように、比較演算子と組み合わせることで「上限のない範囲」も美しく記述可能。
  • `Case Else`の強制: 予期せぬデータが入った際、ここで例外を投げる設計にすることで、バグの所在を即座に特定できる。

2. 実務で差がつく!「カンマ区切り」による複数条件の活用

業務ツールでは、「複数の状態が同じ処理を共有する」ことがよくあります。例えば、特定の部署ID以外は全て「一般権限」とするようなケースです。

Select Case departmentId
Case 101, 102, 105
role = “Admin”
Case 200 To 299
role = “Manager”
Case Else
role = “General”
End Select

このように、「カンマで並べる=OR条件」と覚えるだけで、コードの行数は半分になり、ロジックの意図が明確になります。

3. 堅牢なコードのための「設計の鉄則」

現場でコピペして終わりでは、伝説的なエンジニアとは言えません。以下の3点を意識してください。

① 境界値の明確化(Boundary Value Analysis)

`0 To 59` と書くか `Is < 60` と書くか。この「境界」をプロジェクト内で統一してください。私は「閉区間(To)」を基本とし、例外的な条件のみ「Is」で記述する運用を推奨しています。

② データベース/ファイル連携時の注意

外部入力値(CSVやDBからの取得値)は、必ず「型変換」を行った後に`Select Case`へ渡してください。文字列のまま判定するのはバグの温床です。

‘ 悪い例
Select Case inputData
Case “1”, “2” ‘ 文字列比較はミスを誘発する

‘ 良い例(型安全を担保する)
Dim id As Integer
If Integer.TryParse(inputData, id) Then
Select Case id
‘ …
End Select
End If

③ 保守性の極致:定数化(Enum)の利用

マジックナンバー(101, 102といった数字)をそのまま書くのは卒業しましょう。

‘ 読みやすさと保守性を極めたスタイル
Public Enum DeptCode
System = 101
Accounting = 102
End Enum

Select Case currentDept
Case DeptCode.System, DeptCode.Accounting
‘ 処理
End Select

最後に:コードは「対話」である

あなたが書くコードは、半年後の自分、あるいは来月着任する新人との対話です。

複雑な`If`の迷宮を作らないこと。`Select Case`で論理構造を整理し、誰が見ても「あ、ここはこういうルールなんだな」と一目でわかるコードを書くこと。それが、業務自動化エンジニアとしての第一歩です。

さあ、今すぐプロジェクトのソースコードを開き、その複雑すぎる`If`文を書き換えてみてください。その瞬間に、あなたの設計力は一歩先へと進みます。

タイトルとURLをコピーしました