为什么“只有一个回归”?

时间:2013-03-22 03:50:39

标签: design-patterns coding-style

今天我收到了一位高级开发人员的代码审查评论,他指出的一件事是每个函数应该只有一个return语句。我想知道这只是代码风格问题还是存在安全问题,即潜在的函数堆栈问题或未初始化的变量。任何人都可以提供一个例子(我更喜欢C \ C ++ \ C#)来显示多个return语句的缺点吗?非常感谢。

2 个答案:

答案 0 :(得分:1)

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

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

通过一个条目,一个返回,尽可能少的循环和跳转以及意图,更容易推理程序正确性。多个返回语句会让很多人失望(尽管人们仍然能够适应)。

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

答案 1 :(得分:1)

Google搜索会在这个主题上花费数小时阅读。简短版本是许多较旧的语言只允许一个返回点。此外,在较旧的过程编码样式中,通常使用长达数千行的方法。即使它不是语言要求,如果在每种方法的底部只有一次返回,很多人发现读代码更容易。

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

我会在那里结束;我刚注意到this StackOverflow question。给那个读。