What should be the approach to avoid duplicate code in below pseudo c code snippet?
1 2 3 4 5 6 7 8 9 10  | if(var == something) { A(); B(); } else if(var == something_else) { A(); B(); C(); } else { assert(false); }  | 
在两个
1 2 3 4 5 6 7 8 9  | switch(var) { case something: case something_else: A(); B(); break; } if (var == something_else) C():  | 
更好的解决方案是什么?在
1 2 3 4 5 6 7 8  | if (var == something || var == something_else) { A(); B(); } if (var == something_else) { C(); }  | 
如果您还需要
1 2 3 4 5 6 7 8 9 10  | if (var == something || var == something_else) { A(); B(); if (var == something_else) { C(); } } else { assert(false); }  | 
关于你的问题,
Is there any performance penalty in switch vs if else?
请阅读此问题的答案:
"switch"是否比"if"快?
简而言之,通常不会有任何明显的差异。因此,您应该在编写代码时考虑到可读性。在
您可以为此使用嵌套的if语句,如下所示:
1 2 3 4 5 6 7 8 9  | If (var == something || var == something_ese) { A(); B(); If (var == something_else) { C(); } } Else { Assert(false); }  | 
由于主叫顺序无关紧要,请尝试以下操作:
1 2 3 4 5 6 7 8 9 10 11  | switch(var) {     case something_else: C(); case something: A(); B(); break; default: assert(false); break; }  | 
我建议将
1 2 3 4 5 6 7  | 
这不仅避免了