我有一个相当具体的问题。
假设我在一个函数的末尾,并且我决定是返回true还是false。
我想使用if / else语句执行此操作,并有两个选项:(示例为伪代码)
1)检查是否先工作:
if(resultVar != error){
return true;
}else{
return false;
}
2)检查它是否先失败:
if(resultVar == error){
return false;
}else{
return true;
}
我的问题很简单:哪种情况更好(更快?更干净?)?
我真的在看if / else本身,无视示例正在返回(但感谢答案)
该函数更可能想要返回true而不是false。
我意识到这两种情况做的完全相同,但只是反转了#39;按照他们做事的顺序。我想知道其中任何一方是否有任何优势,是否有一个更快,或更紧密地遵循惯例等等。
我也意识到这是非常挑剔的,我只是不知道是否有任何差异,哪些是最好的(如果重要的话)。
澄清:
需要进行比较以返回布尔值。实例返回的事实与比较发生的相关性不那么重要。
答案 0 :(得分:6)
这是迄今为止最干净的:
return resultvar != error;
答案 1 :(得分:2)
这完全取决于语言和编译器。没有具体的答案。例如,在C中,这两个都将编码为:
return (resultVar!=error);
由任何体面的编译器。
答案 2 :(得分:1)
首先放置,因为它可能会在程序集中释放JUMP
命令。但是,差异可以忽略不计,因为它是else
,而不是else if
。可能/技术上存在差异/,但在这种情况下您将看不到性能差异。
答案 3 :(得分:1)
两个示例中唯一的区别可能是运营商的实施。 A!=运算符反转运算结果。所以它增加了开销,但非常小。 ==是一个直接比较。
但是根据你打算在If / else上做什么,如果只是为变量赋值,则条件三元运算符(?)更快。对于复杂的多值决策,交换机/案例更灵活,但速度更慢。
在你的情况下这会更快:
return (resultVar == error) ? false : true;