私が書いたいくつかのコードをリファクタリングしていて、switch ステートメントを while ループに入れるか、while ループを各ケース ブロックに繰り返すかを決定する必要があります。2 つの異なる方法は、次の疑似コードのようなものです。
オプション1)
while (cnt > 0) {
switch (value) {
case A:
doSomething();
break;
case B:
doSomethingElse();
break;
...
default:
default();
break;
}
cnt--;
}
オプション 2)
switch (value) {
case A:
while( cnt > 0){
doSomething();
cnt--;
}
case B:
while( cnt > 0){
doSomethingElse();
cnt--;
}
...
default:
while( cnt > 0){
default();
cnt--;
}
}
最初のオプションは DRY の原則により適していると思います。これは、while と cnt-- を毎回繰り返さないためです。switch ステートメントでケースを選択すると、while でループを開始し、switch 条件を評価する必要がなくなるため、2 番目のオプションの方が少し良いと思います。
では、これら 2 つのソリューションのどちらを選択しますか? また、その理由は何ですか?
注: switch-condition (つまり、以下のコードの変数「値」) は while ループ全体で変化しないと想定できます。つまり、操作 doSomething()、doSomethingElse() などは影響しません。スイッチステートメント。
NB2: 私が取り組んでいる実際のコードでは、while ループが非常に大きくなる可能性があります。一部のテスト ケースでは、「Cnt」は 10^9 のオーダーになる場合があります。