- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道应该在哪里将这种样式的 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
}
除非满足其中一种情况的条件,否则基本上会失败。这些情况非常相似,只是需要检查什么和需要传递什么不同,这就是我使用 switch 语句的原因。
使用 if
else if
会更好吗?否则,它是否足够清晰以保留,但又不够清晰以保证对 fallthrough 发表评论?多态性也始终是一种选择,但对我来说似乎有点矫枉过正。
最佳答案
在某些情况下,这似乎会做一些奇怪的事情。如果 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.
}
当然,如果意图是即使 foo != barTwo 也可以计算 blahTwo,那么转换可能是最好的方法,但在这种情况下我肯定会赞成一些解释性评论。
关于c++ - 此 switch 语句中的代码味道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1794689/
我有一个单独的 Customer 模型的 View ,该模型在构造时获取一个客户和客户集合。客户模型的需求是有道理的——它是客户的 View 。收藏的要求……我不确定那是不是一种气味,希望得到反馈!
我试图在不同的风格中使用相同的 activity 名称,并为每种风格安装正确的名称。 build.gradle : android { .... buildscript {
我是一名优秀的程序员,十分优秀!