EnMiPcFunciona Asked: 2020-03-09 13:15:40 +0800 CST 2020-03-09 13:15:40 +0800 CST 2020-03-09 13:15:40 +0800 CST 一个函数中有多个返回?[复制] 772 return在函数中使用多个语句是否被认为是一种好习惯?例如: if ( /* ... */ ) return x; else return y; 还是我必须创建一个辅助变量才能仅在代码末尾使用该辅助变量返回? c 1 Answers Voted Best Answer eferion 2020-03-09T22:57:22+08:002020-03-09T22:57:22+08:00 在这个问题上没有统一的政策。每种解决方案都有其优点和缺点: 单回 这种解决方案通常使函数维护更容易,因为对于任何函数,您都会知道它的入口点(在函数的开头)和它的退出点(在函数的结尾)。 由于上述原因,您会发现调试代码更容易,因为要验证函数返回的内容,它需要一个停止点。 多次退货 此解决方法可用于避免函数中的过度嵌套: void variosReturnFunc() { if( !condicion1 ) return; // ... if( !condicion2 ) return; // ... } void unReturnFunc() { if( condicion1 ) { // ... if( condicion2 ) { // ... } } } 在前面的例子中很容易看出,如果条件的数量比较多(例如超过 3 个),过多的嵌套大括号会妨碍代码的可读性。 它的主要缺点是调试一个函数需要定位所有return. 个人结论 作为一般规则,尝试使用单个return. 如果伴随着这个习惯,你习惯了不要编写过长的函数(超过 30 行)那就更好了。 我通常在执行一系列初始检查的函数中保留多个选项return,以免用键填充函数。我认为在这种情况下,使用多个退出点是合理的,因为这提高了代码的可读性……但是,我强调这是我个人的意见。
在这个问题上没有统一的政策。每种解决方案都有其优点和缺点:
单回
这种解决方案通常使函数维护更容易,因为对于任何函数,您都会知道它的入口点(在函数的开头)和它的退出点(在函数的结尾)。
由于上述原因,您会发现调试代码更容易,因为要验证函数返回的内容,它需要一个停止点。
多次退货
此解决方法可用于避免函数中的过度嵌套:
在前面的例子中很容易看出,如果条件的数量比较多(例如超过 3 个),过多的嵌套大括号会妨碍代码的可读性。
它的主要缺点是调试一个函数需要定位所有
return
.个人结论
作为一般规则,尝试使用单个
return
. 如果伴随着这个习惯,你习惯了不要编写过长的函数(超过 30 行)那就更好了。我通常在执行一系列初始检查的函数中保留多个选项
return
,以免用键填充函数。我认为在这种情况下,使用多个退出点是合理的,因为这提高了代码的可读性……但是,我强调这是我个人的意见。