我正在重构我写的一些代码,我必须决定是将一个switch语句放入while循环中,还是在每个case块中重复while循环。这两种不同的方式类似于以下伪代码:
选项1)
选项2)
我认为第一个选项更符合DRY原则,因为我不需要每次重复while和cnt--。虽然我更喜欢第二个选项,因为它一旦在switch语句中选定一个情况,就开始在while循环中循环,而不必再评估switch条件。 那么,你会选择这两种解决方案中的哪一种,为什么?
注:我们可以假设switch条件(即代码中的变量"value")在整个while循环中没有改变,换句话说:操作doSomething(),doSomethingElse()等不会影响switch语句。
注2:在我正在处理的实际代码中,while循环可能非常巨大。对于某些测试用例,"Cnt"可以达到10^9的数量级。
选项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条件。 那么,你会选择这两种解决方案中的哪一种,为什么?
注:我们可以假设switch条件(即代码中的变量"value")在整个while循环中没有改变,换句话说:操作doSomething(),doSomethingElse()等不会影响switch语句。
注2:在我正在处理的实际代码中,while循环可能非常巨大。对于某些测试用例,"Cnt"可以达到10^9的数量级。