对于每个函数只有一个或多个出口点是否更好,有很多讨论,但我不清楚哪些语句可以被视为出口点:只有return还是其他一些语句?
例如,我们应该考虑throw和break作为出口点吗?
有两个或三个出口点吗?
func(x, y) {
// guard
if (!x)
throw "You have an error here!"
if (y)
return "foo"
else
return "bar"
}有一个或零个出口点吗?
func() {
i = 1
loop {
if (i == 5)
break
show_message(i)
i = i + 1
}
}发布于 2020-10-07 21:30:45
对于一个函数,出口点是函数离开的所有位置:
exit())。但在讨论单一出口点时,所有这些真正的出口点都是无关紧要的。这样的讨论是关于代码可读性的,只是根据正常的业务流程有意退出。在这方面,只有返回和终止是相关的。
异常处理遵循一个替代流,该流被排除在单个出口点间。事实上,异常处理可以使异常情况比没有异常处理的等效代码更安全和更易读(在这方面,请参见米斯拉C++ 6-6-5的“异常”一节和Autosar C++14第6.8.4节,它们都是安全编码标准,并将异常排除在各自提倡的单一出口点理念之外)。
https://softwareengineering.stackexchange.com/questions/416667
复制相似问题