ループカウンタに対する switch の理由

今見ているコードが。


for (int row = 0; row < MAX_ROWS; row++) {
for (int col = 0; col <= 3; col++) {
switch (col) {
case 0: doSomething(); break;
case 1: doEverything(); break;
case 2: doAnything(); break;
case 3: doNothing(); break;
}
}
}

こんな作り方。グリッドのデータを順に処理していくロジック。定数リテラルは例示ではない。マジックナンバー

どうせ全部のカラムについて処理を行うのに、わざわざ for 文と switch 文で場合分けする理由がさっぱりわからない。気持ちはわからなくもない気がしないでもないけれど、他に書き方あると思う。どうしてだろう。なぞ。

ちなみに同じような処理がソース全体にコピー&ペーストの勢いでいっぱい散りばめられていて、しかも GOTO を使っている。 VB .NET なのに。なんとなく頭が痛むのは気のせいだろうか。難しい。