If/Else,先测试真还是假

If/ Else, test true first or false first

我有一个比较具体的问题。

假设我在一个函数的末尾,并且正在确定 return 是真还是假。

我想使用 if/else 语句来执行此操作,并且有两个选项:(示例在伪代码中)

1)首先检查是否有效:

if(resultVar != error){
    return true;
}else{
    return false;
}

2)先检查是否失败:

if(resultVar == error){
    return false;
}else{
    return true;
}

我的问题很简单:哪种情况更好(更快?更清洁?)?

我真的在看 if/else 本身,忽略了这个例子 returning(但感谢您的回答)

该函数更可能想要 return true 而不是 false。

我意识到这两个案例做的事情完全一样,只是 'reversed' 按照它们做事的顺序。我想知道其中一个是否比另一个有任何优势,一个是否稍微快一点,或者更严格地遵循约定,等等。

我也意识到这非常挑剔,我只是不知道是否有任何区别,哪个最好(如果重要的话)。

说明:

需要对 return 布尔值进行比较。事实上,示例是什么 return 与比较如何发生的相关性较小。

这是迄今为止最干净的:

return resultvar != error;

这完全取决于语言和编译器。没有具体的答案。例如,在 C 中,这两个都将被编码为:

return (resultVar!=error);

任何体面的编译器。

将 true 放在第一位,因为它可能会在汇编中删除 JUMP 命令。但是,差异可以忽略不计,因为它是 else,而不是 else if。可能/技术上存在差异/,但在这种情况下您将看不到性能差异。

两个示例中的唯一区别可能是运算符的实现。 != 运算符反转运算结果。所以它增加了开销,但非常小。 == 是直接比较。

但是根据您打算在 If/else 上执行的操作,如果只是简单地为变量赋值,则条件三元运算符 (?) 更快。对于复杂的多值决策,switch/case 更灵活,但速度较慢。

你的情况会更快:

return (resultVar == error) ? false : true;