6

您如何命名您的 GoTo 标签?我很少经常使用,所以我很难找到好名字。

请避免经典的“goto is evil and eat your code alive Discussion”

4

5 回答 5

6

在批处理文件中,我经常使用 HELL。

像:

some_command || GOTO HELL

...

HELL: 

echo "Ouch, Hot!"
于 2009-03-28T19:21:52.740 回答
5

我的标签名称几乎总是属于以下模式之一:

  • 称为“重新启动”,用于重新启动一组嵌套循环,因为更改使某些内容无效
  • 在 return 语句之前称为“exit”或“return”,只是因为跟踪语句记录了返回值以进行调试
  • 与它替换的布尔变量同名
于 2009-03-28T19:24:28.663 回答
2
  • “清理”,如果它在释放一些先前分配的资源(或类似的“最终”部分工作)之前
于 2009-03-28T19:45:37.973 回答
2

在 fortran 中,我使用 goto 进行回滚,我通常从 999 向后开始(在 fortran 中,goto 标签只是数字)

    call foo(err)
    if (err /= 0) goto 999

    call bar(err)
    if (err /= 0) goto 998

    call baz(err)
    if (err /= 0) goto 997

    ! everything fine
    error = 0
    return

997 call undo_bar()
998 call undo_foo()
999 error = 1
    return

如果出于某种原因我想跳过回滚部分,我也会使用大于 1000 的标签。

在 C 和其他语言中,我会使用 rollbacknumber(例如 rollback1、rollback2),因此从标签中可以清楚地看出您将要回滚。这基本上是使用 goto 的唯一充分理由。

于 2009-03-28T20:03:49.270 回答
0

我通常只需要2个案例。因此,我的 goto 标签是beginfinally

于 2009-03-28T19:50:43.310 回答