【问题标题】:Why is it not good practice to use 'goto'? [duplicate]为什么使用“goto”不是一个好习惯? [复制]
【发布时间】:2017-10-31 01:58:53
【问题描述】:

我在这本书中读到我正在学习 C++ 中的循环,它首先教的是 goto,但在接近尾声时它说不要使用它,因为这是不好的做法,并说它创建了“意大利面条”代码。我不明白这意味着什么以及为什么它不好。有人可以解释一下吗?

【问题讨论】:

  • 关于该主题的经典论文:Go To Statement Considered Harmful 由 Dijkstra(最短路径算法等著名),1968 年
  • 因为有更安全和可读的方式来做事!如果你必须这样做,这是一个非常糟糕的设计的危险信号!
  • @MaximeGélinas 全面解雇 goto 也是不健康的。 goto 有 一些 的有效用途,即打破 n 嵌套循环。
  • 当然,n-nested循环通常可以移出到一个单独的函数中,然后你可以使用return关键字将它们“打破”;所以即使那样 goto 也不是唯一的选择。
  • 我不明白这是什么意思,为什么不好。有人可以解释一下吗? -- 有一件事,如果你发布一个关于代码不起作用的问题,并且它充满了goto 声明,那么你帮助你的人的机会减少了大约95 - 99%。经验丰富的程序员不会浪费时间试图找出意大利面条式代码。

标签: c++


【解决方案1】:

Spaghetti 是一种结构不良的代码,由于存在多个未记录和意外的链接或依赖关系,因此难以更新。你在一个地方触摸它,你会看到其他东西以一种意想不到的方式被破坏或修改。就像粘稠的意大利面一样,你拉一个末端,你会看到许多地方开始移动。 GOTO 通常违反结构化、程序化编程的原则,因此该术语暗示了程序流程的纠结和任意性质。

【讨论】:

    猜你喜欢
    • 2020-01-03
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    相关资源
    最近更新 更多