从我记事起,我就一直避免使用 switch 语句失败。事实上,我不记得它曾经作为一种可能的做事方式进入我的意识,因为它很早就被灌输到我的脑海中,它只不过是 switch 语句中的一个错误。然而,今天我遇到了一些有意使用它的代码,这让我立即想知道社区中的每个人对 switch 语句失败的看法。
这是一种编程语言应该明确不允许的东西(就像 C# 那样,尽管它提供了一种解决方法),还是它是任何语言的一个功能,足够强大,可以留在程序员手中?
编辑: 我对失败的含义不够具体。我经常使用这种类型:
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something
break;
case 2:
case 3:
case 4:
// Do something
break;
}
但是,我很担心这样的事情。
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something, but fall through to the other cases
// after doing it.
case 2:
case 3:
case 4:
// Do something else.
break;
}
这样,每当 case 为 0、1 时,它就会执行 switch 语句中的所有操作。我已经看到了这一点,我只是不知道我是否同意 switch 语句应该这样使用。我认为第一个代码示例非常有用且安全。第二个似乎有点危险。
最佳答案
这可能取决于您认为失败的原因。我对这种事情没意见:
switch (value)
{
case 0:
result = ZERO_DIGIT;
break;
case 1:
case 3:
case 5:
case 7:
case 9:
result = ODD_DIGIT;
break;
case 2:
case 4:
case 6:
case 8:
result = EVEN_DIGIT;
break;
}
但是,如果您有一个 case 标签,后面跟着一个代码,该代码会落入另一个 case 标签,我几乎总是认为这是邪恶的。也许将公共(public)代码移至一个函数并从两个地方调用会是一个更好的主意。
关于coding-style - Switch 语句失败...应该允许吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/188461/