猜猜这个转到的标签

时间:2009-04-22 18:27:00

标签: refactoring label goto

我打算在VB6代码之后重构这个代码(由其他人编写)。

Public Function GetValue(ID As Long) As Boolean
    On Error GoTo eh

    '' ... DAL Logic...

eh_Exit:
  On Error GoTo 0
  Exit Function
eh:
  Resume eh_Exit
End Function

您认为原作者对标签eh的意图是什么?第一页

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

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

4 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:4)

“*** E *** rror *** H *** andler”

我的第一个C工作,每个函数都在底部附近标记为“err_exit”。检测到任何无法在本地处理的错误条件,并使用“if(error ...)goto err_exit;”进行处理。此外,我们所有的函数在良好状态下返回0,或在错误时返回-1。

理论上,err_exit可以进行一些清理工作,但实际上我们的大部分功能都像

一样结束了。
  return 0;
err_exit:
  return -1;

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我猜测它是一种允许函数代码结束而不必跳过任何错误处理逻辑的模式,但如果函数编写器没有退出函数也会优雅地终止言。

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