Ano*_*ous 1 c++ switch-statement
我想知道这种风格的switch语句应该改成if else语句.
switch (foo) // foo is an enumerated type
{
case barOne:
if (blahOne)
{
DoFunction(//parameters specific to barOne);
break;
}
case barTwo:
if (blahTwo)
{
DoFunction(//parameters specific to barTwo);
break;
}
//etc.
default:
// Whatever happens if none of the case's conditionals are met
}
Run Code Online (Sandbox Code Playgroud)
除非其中一个案件满足条件,否则基本上会发生坠落事件.这些情况非常相似,只是需要检查的内容和需要传递的内容不同,这就是我使用switch语句的原因.
使用会更好if else if吗?否则,它是否足够清晰,但不足以保证对该漏洞的评论?多态性也总是一种选择,但对我来说似乎有些过分.
在某些情况下,这似乎可能会产生奇怪的事情.如果foo == bar1,而blahOne是假的,但是blahTwo是真的怎么办?然后你会掉进并在foo == bar2情况下调用函数,即使foo不等于bar2.
这在实践中可能是意料之外的,但如果它确实发生过,那么调试可能会很困难.在这种情况下,我会投票给if else,因为流程更简单.
if (foo == barOne && blahOne)
{
DoFunction(/*parameters specific to barOne*/);
}
else if (foo == barTwo && blahTwo)
{
DoFunction(/*parameters specific to barTwo*/);
}
else
{
// Handle the fallthrough case.
}
Run Code Online (Sandbox Code Playgroud)
当然,如果意图是即使foo!= barTwo也可以评估blahTwo,那么切换可能是最好的方法,但在这种情况下我绝对赞成一些解释性注释.
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |