Refactoring 猜猜这个goto标签

Refactoring 猜猜这个goto标签,refactoring,label,goto,Refactoring,Label,Goto,我正要重构下面的VB6代码(由其他人编写) 你认为原作者对标签的意图是什么 可能只是“呃,发生了什么事?” 我想让它可读,而不必像现在一样思考它…错误处理程序?不知道为什么里面没有错误处理。“***E***错误***H***andler” 在我的第一个C作业中,每个函数的底部都有一个标签,名为“err_exit”。检测到任何无法在本地处理的错误情况,并使用“if(error…)goto err_exit;”进行处理。此外,我们的所有函数在状态良好时返回0,或在出现错误时返回-1 理论上,err_

我正要重构下面的VB6代码(由其他人编写)

你认为原作者对标签的意图是什么

可能只是“呃,发生了什么事?”


我想让它可读,而不必像现在一样思考它…

错误处理程序?不知道为什么里面没有错误处理。

“***E***错误***H***andler”

在我的第一个C作业中,每个函数的底部都有一个标签,名为“err_exit”。检测到任何无法在本地处理的错误情况,并使用“if(error…)goto err_exit;”进行处理。此外,我们的所有函数在状态良好时返回0,或在出现错误时返回-1

理论上,err_exit是用来做一些清理的,但实际上我们的大部分功能都是这样结束的

  return 0;
err_exit:
  return -1;

“有趣”的设计。它看起来像是在调试过程中放置断点的地方,但它创造性地让人困惑。

我冒昧地猜测,它是一种模式,允许函数的代码刚好结束,而不必跳过任何错误处理逻辑,但如果函数编写器没有Exit function语句,它也可以优雅地终止


因此,您可以将eh_Exit中的所有内容粘贴到任何函数中,而无需更改该函数中的其余代码。

@Ryan:我认为您是对的。。。在看了很长时间的代码之后,我没有想到“错误处理程序”。。。谢谢@保罗:猜+1;)在看了太长时间的屏幕后,这些首字母缩略词似乎让我感到不安,我必须想清楚这意味着什么。。所以我将把它们全部改为“ErrorHandler”…@dance2die,你也可以重构一下函数。谢谢你的回复。。我是。。现在继续……乔尔,我不知道你为什么把我的“错误处理程序”大写,因为标签是“呃”而不是“呃”?@Joel:Ah,乔尔。。手感不错。
  return 0;
err_exit:
  return -1;