-2

今天收到一位资深开发者的 code review 评论,他指出的一件事是每个函数应该只有一个 return 语句。我想知道这只是代码风格问题还是存在安全问题,即潜在的函数堆栈问题或未初始化的变量。谁能提供一个例子(我更喜欢 C\C++\C#)来展示多个 return 语句的缺点?非常感谢。

4

2 回答 2

1

在汇编中,所有函数都必须在函数开头设置堆栈后恢复堆栈。这意味着函数没有逃逸,除非你愿意多次编写清理堆栈代码,这对于空间效率来说并不是太好。

这仅适用于实际具有参数或调用其他函数或存储局部变量的函数,平面系统程序集可以随时返回。

用一个入口和一个返回,尽可能少的循环和跳转,并且有意图地推理程序的正确性要容易得多。多个返回语句让很多人失望(尽管人们仍然设法适应)。

我不会将多次返回称为邪恶,有时它们是必要的,并且在很多时候是有意义的,例如阶乘程序。

于 2013-03-22T04:02:10.160 回答
1

谷歌搜索会出现关于这个主题的数小时阅读。简短的版本是许多旧语言只允许一个返回点。此外,在较旧的过程编码风格中,通常有数千行长的方法。即使这不是语言要求,许多人发现如果在每个方法的底部都有一个返回值,则代码更容易阅读。

快进到今天。如果您遵循面向对象的最佳实践,主要是单一职责原则,您的方法应该小于 50 行并且易于阅读。拥有多个返回点不是问题。事实上,它们有助于防止深度嵌套的代码。

我会在那里结束它;我刚刚注意到这个 StackOverflow 问题。读一读。

于 2013-03-22T04:03:31.603 回答