代码之家  ›  专栏  ›  技术社区  ›  Craig Nicholson

GOTO在PHP中是邪恶的吗[关闭]

  •  69
  • Craig Nicholson  · 技术社区  · 6 年前

    GOTO ,它只是一个跳转标签。我很想知道这个 后藤 是邪恶的,意味着坏代码?

    12 回复  |  直到 15 年前
        1
  •  156
  •   Konamiman    15 年前

        2
  •  104
  •   Loris    8 年前

    我不敢相信居然没有人发这个:)

    xkcd - goto

        3
  •  82
  •   Anthony K    8 年前

    无论使用何种控制结构,糟糕的代码结构都是有害的。

    所以,只需写两个版本(有和没有GOTO),看看哪一个更容易理解。那么选择就很容易了。

        4
  •  27
  •   schmunk    12 年前

    PHP manual page 这里没有:

    这是 不是完全不受限制的转到 您不能跳出函数或方法,也不能跳入函数或方法

    我觉得这和以前的很不一样 ye olde基本风格gotos .

        5
  •  18
  •   AdamJonR    13 年前

    http://adamjonrichardson.com/2012/02/06/long-live-the-goto-statement/

    我实际上浏览了一个arrow代码的示例(深度嵌套的条件),并在一个版本中使用标准实践(保护子句、分组条件、提取函数)对其进行重构,在另一个版本中使用基于goto的版本,我实际上更喜欢基于goto的重构。

        6
  •  11
  •   atoumey    15 年前

        7
  •  7
  •   Mark Rendle    15 年前

    任何能够使代码在给定情况下更具可读性的语言特性都是一件好事。GOTO就是这样一种语言特性,即使这种情况很少。如果我们禁止任何语法,使贫穷的程序员有可能编写糟糕的、无法维护的代码,我们的工作就会困难得多。

        8
  •  5
  •   Arno    15 年前

    我们的日常语言(我指的是95%的基本代码中的一种)是Cobol,它广泛使用GOTOs。

    另一方面,到目前为止,许多脚本在将近十年的时间里都没有它。此外,它与PHP的发展背道而驰,具有更多面向对象的特性。

        9
  •  3
  •   Glen Solsberry    8 年前

    GOTO通常是邪恶的,因为它允许您构建非结构化代码。使用通常的循环,您可以构建良好的结构化代码,因为它是结构化的,所以易于遵循。

    当非结构化代码从这里跳到那里时,您刚刚发现GOTO语句中的邪恶。几乎总是最好避免它。也许每100.000行就有一个地方,一个GOTO语句可以简化很多代码,因此代码不是邪恶的,但是如果你不确定,那么你应该避免GOTO。

    编辑:好吧,我想在这里补充一下我自己的观点,还有其他一些指令允许您创建非结构化代码,并且在我认为它们应该是邪恶的时候,它们并不被认为是邪恶的。

    例如,函数中间的一个返回是到函数末尾的一个GOTO,所以我避免使用它们,并且在每个函数的末尾只使用一个返回。

    像Vb.Net这样的其他语言(可能也有其他语言)允许执行Exit For、Exit While、break等类似的操作,这些操作也会对代码进行非结构化处理,我认为应该避免。

        10
  •  2
  •   yafrani    11 年前

        11
  •  1
  •   EThaiZone    12 年前

    我在编写在cli模式下工作的脚本时使用了GOTO。它救了我的命。