我一直在想,但找不到明确的答案。我什么时候应该使用'if'或'switch'语句。什么时候比另一个更好?
例如我可以这样做:
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
switch (buttonIndex) {
case 0:
//Stuff
break;
case 1:
//Stuff
break;
default:
break;
}
//OR
if (buttonIndex == 0) {
//Stuff
}
if (buttonIndex == 1) {
//Stuff
}
}
希望你能提供帮助,这只是一个例子,但我确信在不同的情况下,它会有所不同。
答案 0 :(得分:13)
在这种情况下,这无关紧要。切换存在的原因是它比if更快。如果你编写一个if ... else if ... else if ...
的长代码,它的执行速度会慢于switch,因为if
执行迭代搜索(O(n)),而switch
执行基于表的查找(O(1))< / p>
答案 1 :(得分:7)
我认为这是一个主观问题。答案取决于你。
对于我自己的代码,我喜欢使用switch
语句,因为很明显发生的事情是某些条件的结果,如果条件不同,可以做其他事情。
但如果switch
case:
语句下面的代码相当冗长或复杂,那么对于我自己的代码,我会做第二件事:if (buttonIndex == 0) {
位。
答案 2 :(得分:4)
如果您只检查一个变量是否具有某个值(buttonIndex == 1)并且对多个值执行此操作,则最好使用switch
。
但是如果你正在使用一些更复杂的条件(甚至可能包括条件中的函数),那么你应该使用if statements
。
答案 3 :(得分:3)
我希望代码尽可能接近人类的理解。这就是为什么三种形式的决策(if-then-else,switch-case-default,?:)适合映射三个不同的过程:
if
的映射switch
?:
的映射因此,请使用映射到您认为实际决策方式的方式。
当然,应该强调在 ......的许多场景中适当的OO解决方案......我们这样做......我们这样做......这样for ...和这种方式... ,经常使用switch
(但它也适用于某些if
)是不使用这些结构并将其替换为多态。手动决策只应在有真正决策时进行,而不是伪造(逻辑)多态。
答案 4 :(得分:1)
切换语句比嵌套的if语句更快。而已。
答案 5 :(得分:0)
Switch
就像if elseif
一样。太多Switch
或if elseif
会使您的代码难以阅读和理解。但没有任何功能问题。
答案 6 :(得分:-1)
这取决于你想在里面做什么。 请记住,你无法在switch语句中分配新对象
答案 7 :(得分:-3)
如果'if'和'switch'是如此邪恶,它们应该从现代编程语言中删除。事实是他们仍然存在。我认为关键是我们应该尽力使我们的代码正确有效地工作,易于理解和维护。 OOP只是编写程序的一种方式,我们不应该为纯OOP编写程序。所以这确实是一个主观问题。