c - 在下面的伪 C 代码片段中避免重复代码的方法应该是什么?

标签 c algorithm

if(var == something) {
    A();
    B();
} else if(var == something_else) {
    A();
    B();
    C();
} else {
    assert(false);
}

如何避免在 if 两种情况下调用 A() 和 B() 的重复代码。我应该使用 switch case 吗,

switch(var) {
case something:
case something_else:
    A();
    B();
    break;
}
if (var == something_else)
   C():

什么是更好的解决方案? switchif else 有任何性能损失吗?

最佳答案

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);
}

关于你的问题,

Is there any performance penalty in switch vs if else?

请阅读这个问题的答案:

Is 'switch' faster than 'if'?

简而言之,通常不会有任何明显的差异。所以你应该在编写代码时考虑到可读性。在 if/elseswitch 之间,选择更自然的。

关于c - 在下面的伪 C 代码片段中避免重复代码的方法应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33233384/

相关文章:

c - 如何在C中将文本文件读取为矩阵形式

Python——重构后的程序返回不同的结果

python - 选择优化最小数量的元素以跨越一个区域

PHP/MySQL - "Top Rated"的算法

python - 创建共享内存的 pythonic 对象

objective-c - 如何使用 ASN.1 x509 字节数组中的 RSA 公钥加密字符串?

javascript - 简单 JavaScript 游戏的陡坡体积算法

PHP采取所有组合

python - 如何调试或跟踪DBus?

c - 来自 OpenGL 的 X11 BadAlloc 错误