if(var == something) {
A();
B();
} else if(var == something_else) {
A();
B();
C();
} else {
assert(false);
}
如何在if
个案例中避免重复调用A()和B()的代码。我应该使用像
switch(var) {
case something:
case something_else:
A();
B();
break;
}
if (var == something_else)
C():
什么是更好的解决方案? switch
与if else
之间是否存在性能损失?
答案 0 :(得分:6)
if (var == something || var == something_else) {
A();
B();
}
if (var == something_else) {
C();
}
如果您还需要else
,则可以执行以下操作:
if (var == something || var == something_else) {
A();
B();
if (var == something_else) {
C();
}
} else {
assert(false);
}
关于你的问题,
switch if if else是否有任何性能损失?
请阅读此问题的答案:
简而言之,通常不存在任何明显的差异。因此,您应该在考虑可读性的情况下编写代码。在if/else
和switch
之间,只需选择更自然的内容。
答案 1 :(得分:2)
由于呼叫顺序无关紧要,请尝试以下方法:
switch(var) {
case something_else:
C();
case something:
A();
B();
break;
default:
assert(false);
break;
}
答案 2 :(得分:2)
您可以使用嵌套的if语句,如下所示:
If (var == something || var == something_ese) {
A();
B();
If (var == something_else) { C(); }
}
Else
{
Assert(false);
}
答案 3 :(得分:1)
我建议将assert
和作品分开:
assert(var == something || var == something_else);
A();
B();
if(var == something_else) {
C();
}
这不仅避免了A
和B
调用的重复,而且在开头指定先决条件时也使其更具可读性。