关于设计模式:为什么”只返回一次”?

why “only one return”?

本问题已经有最佳答案,请猛点这里访问。

今天我收到了一位高级开发人员的代码审查评论,他指出的一点是每个函数应该只有一个返回语句。我想知道这是否只是代码样式的问题,还是存在安全问题,即潜在的函数堆栈问题或未初始化的变量。有人能提供一个例子(我更喜欢C++ [c++c])来显示多重返回语句的缺点吗?谢谢。


谷歌搜索会让你花几个小时阅读这个话题。简短的版本是许多旧的语言只允许一个返回点。此外,在旧的过程编码样式中,通常有数千行长的方法。即使它不是一种语言需求,许多人发现如果在每个方法的底部都有一个返回,那么阅读代码就更容易了。

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

我将在这里结束它;我刚刚注意到这个stackoverflow问题。读一下。


在汇编中,所有函数都必须在函数开始时设置堆栈之后恢复堆栈。这意味着,除非您愿意多次编写清理堆栈代码,否则无法从函数中逃脱,这对空间效率不太好。

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

通过一个条目和一个返回,尽可能少的循环和跳转,并且有目的地,更容易理解程序的正确性。多个返回语句会让很多人失望(尽管人们仍然设法适应)。

我不认为多重返回是邪恶的,有时它们是必要的,而且在很多时候,是有意义的,比如一个阶乘程序。