我在某处读过一条规则:
遵循单进/单出规则。切勿在同一个函数中编写多个返回语句。
这个说法属实吗?如果是这样,您能否详细说明为什么我们应该遵守这条规则?
这是真的?
这就是规则在使用和执行的地方所说的内容。这是一个好的规则吗?我竭尽全力反对它的收养。我认为这是一个愚蠢的规则。比愚蠢更糟糕的是:这对 C++ 来说是一条有害的规则。
我确实同意规则的第一部分“单一条目”。福特兰语言entry
声明引起的问题比它解决的问题多得多。该规则的第一部分不适用于 C 或 C++,原因很简单,这两种语言都没有提供多入口点机制。 “单次输入”在 C 和 C++ 中是无操作。
那么“单一出口”又如何呢?提前返回并不一定会造成问题。在返回之前未能处理分配的资源是导致问题的原因。正确的规则是“清理你的烂摊子”,或者不要留下悬而未决的资源。单一出口并不能解决这个问题,因为它没有说要清理你的烂摊子。
在 C 语言中,单次进入/单次退出规则通常与允许(甚至鼓励)使用goto
用于错误处理。我可以看到这个地方goto
用于 Linux 内核代码中的错误处理。但在 C++ 中则不然。这就是为什么我写到单次进入/单次退出在 C++ 中是有害的。该规则不鼓励使用 RAII 和异常安全编程,并鼓励使用goto
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)