【问题标题】:Return vs break when closing a function?关闭函数时返回与中断?
【发布时间】:2013-08-24 20:05:54
【问题描述】:

假设我有一个单一的for loop 函数;如果没有与机械相关的偏好,最好选择returnbreak 吗?或者它们会完全一样?

void function()
{
  for (int i; i<foo; i++)
     {
         if (something)
            // return? break?
     }
  // nothing else after this
}

【问题讨论】:

  • 它们传达不同的语义。
  • 什么,更具体地说?
  • 一个品味问题:我做 result = x - return - goto - break - mmm 无论什么适合
  • 其实没有唯一的建议
  • 是的.. 猜到了;我想我现在会坚持使用 break,如果我对这个函数做更多的事情,我可能会改变一些事情。谢谢!

标签: c++ for-loop


【解决方案1】:

使用 break 将退出循环,而 return 将实际完成该方法。因此,如果您的目标是简单地停止循环,则可以使用 break。但是,如果您希望方法结束,请使用 return。有关返回与休息的特殊情况的其他一些 cmets,请参阅此帖子:break and return in ruby, how do you use them?

********编辑******** 在这种情况下,它们的工作方式完全相同,除非您在函数的 for 循环下有更多代码。如果是这种情况,请使用 break 来命中该代码。

【讨论】:

  • 是的,关键是他们在这种情况下做同样的事情。我猜他们在这里做同样的事情
  • @Banderi Zealots 关于函数中的单返回点会告诉你无论如何都要使用break。老实说,只要弄清楚以后阅读此代码的任何人(包括您自己)会发生什么。
  • 是的,我想说这种情况下的 break 可能意味着其他代码即将到来。如果循环下面没有其他代码,我会使用 return。
【解决方案2】:

就生成的代码而言,您可以期望它们在这种情况下完全相同。

然而,return 与 break 有不同的含义。 Return 表示您正在退出函数,而 break 只是退出循环。现在的结果可能是一样的,但是当算法改变或者你需要做一些后处理时,结果可能会改变。

在这种情况下,如果没有实际代码,不可能说什么更合适,即使那样也可能取决于意见。

【讨论】:

  • 是的,这是一个更笼统的问题。由于结束任何一个对我来说都很好,而且它们也相互结束,我想它们是一样的。
  • @Banderi 我尝试(但显然失败了)在我的回答中指出它们不是相同的交易,存在细微差别 - 即使在这种情况下也是如此。
  • 好吧,我唯一需要做的就是结束函数,所以他们在这种情况下的区别似乎要么是偏好,要么是我以后对函数的处理......我猜?不过,我知道它们“实际上”是什么意思
【解决方案3】:

在这种情况下,我更喜欢使用break。需求会随着时间而改变,并且 有一天你可能不得不在循环之后添加另一段代码。那么,早 return 可能是一个等待发生的错误,特别是如果早期循环退出是 用于罕见且难以测试的条件。

【讨论】:

  • 这也太对了。。我真的没想到。
猜你喜欢
  • 2012-01-01
  • 1970-01-01
  • 2019-11-25
  • 2013-11-17
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多