我正在重构我编写的一些代码,我必须决定是要将 switch 语句放入 while 循环还是将 while 循环重复到每个 case 块中。这两种不同的方式类似于以下伪代码:
选项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 语句中选择了一个 case,它就会开始在 while 中循环,并且不再需要评估 switch 条件。
那么,您会选择这两种解决方案中的哪一种,为什么?
注意:我们可以假设 switch 条件(即下面代码中的变量“值”)在整个 while 循环中不会改变,换句话说:操作 doSomething()、doSomethingElse() 等不会影响开关语句。
NB2:在我正在处理的实际代码中,while 循环可能非常庞大。“Cnt”,对于某些测试用例,可以是 10^9 的数量级