【问题标题】:Returning inside an else statement在 else 语句中返回
【发布时间】:2016-08-14 00:14:21
【问题描述】:

你应该这样写你的函数吗:

int foo()
{
    if (bar)
        return 1;
    return 2;
}

还是这样?

int foo()
{
    if (bar)
        return 1;
    else
        return 2;
}

一种方式客观地比另一种更好,还是个人喜好问题?如果一种方法更好,为什么?

【问题讨论】:

标签: if-statement return


【解决方案1】:

我会尽可能地从一个函数中设置一个退出点。使代码更易于维护和调试。所以我会做这样的事情:

int foo()
{
    var retVal;
    if (bar) {
        retVal = 1;
    }
    else {
        retVal = 2;
    }
    return retVal;
}

如果你想更简洁,或者这个......

int foo()
{
    var retVal = 2;
    if (bar) {
        retVal = 1;
    }
    return retVal;
}

【讨论】:

  • @Reddy - 它怎么无法访问?它总是会被执行。
  • return retVal; 无法访问.. 如果控件进入 if 则内部的 return 语句将被执行。 else if 如果 else 中的 return 语句将被执行则跳过。没有其他可用的流程.. 如果它的 if else if ...,你的语法会很好
  • @Reddy - 你迷失了我....if 中没有返回语句,else 中也没有返回语句。唯一的 return 语句是最后一条语句。
【解决方案2】:

在性能方面没有什么不同。 这里是个人喜好。我更喜欢第二个,因为它干净易懂。有经验的人可以马上掌握这两种语法但是当你把第一种语法放在新程序员面前时,他会感到困惑。

我更喜欢简洁的代码(同时考虑可读性和性能)。当第一种语法肯定没有性能改进时,我会选择第二种语法。

【讨论】:

    【解决方案3】:

    以上任何陈述都没有性能改进,完全由您选择。编译器足够聪明,可以弄清楚您要做什么。我个人更喜欢第一个,因为这意味着更少的代码。但是在 c# 中,两种情况下生成的 msil 是相同的。

    【讨论】:

      猜你喜欢
      • 2021-08-31
      • 2020-12-08
      • 1970-01-01
      • 2023-02-21
      • 2020-07-06
      • 2014-01-29
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多