我是否应该将最后一个“返回”语句封装为“else { return .. }',如果它在逻辑上是可选的

Should I encapsulate the last `return` statement with `else { return ... }` if it is logically optional?

本文关键字:如果 逻辑上 最后一个 是否 返回 else 封装 语句 return      更新时间:2023-10-16

哪种格式在速度、性能和机器代码大小方面更好?

最后return封装:

static bool MyClass::IsEqual(int A, int B)
{
    if (A == B)
    {
        return true;
    } 
    else
    {
        return false;
    }
}

最后return未封装:

static bool MyClass::IsEqual(int A, int B)
{
    if (A == B)
    {
        return true;
    }
    return false;
}

要回答您的问题 - 生成并查看汇编代码。我敢打赌汇编程序代码是相同的 - 所以性能没有差异。

如果可能的话,我总是删除if/else,考虑到你的例子,我会这样做:

static bool MyClass::IsEqual(int A, int B)
{
    return (A == B);
}

但我知道现实世界的例子并没有这么简单。

哪种格式在速度、性能和机器代码大小方面更好?

它们都应该相同或接近它。 此外,你问错了问题。

一个更好的问题是,

我应该更喜欢哪个,为什么?

请记住,C++代码旨在由人类而不是机器读取。 鉴于此,选择一种编码风格而不是另一种编码风格的主要动机应该是它对人类的可读性。 尽管这种考虑很重要,但不幸的是,它也是主观的。 底线是你必须自己决定哪个更好,但重要的是你出于正确的原因提出正确的问题并思考答案。

两个代码片段应该产生完全相同的结果,所以这不是它们中的任何一个的参数。

真正决定使用哪个版本的是编码风格。if/else变体的优点是两个分支位于同一逻辑层上。有时这可能是这样写的一个很好的理由。

第二种形式可读性稍高,因为它降低了嵌套级别。使用一种或另一种形式绝对不会对性能造成损失。