我最近发现PHP 5.3支持新的语言结构调用GOTO
.每个人都知道它的作用.然而,它并不完全是传统的GOTO
,它只是一个跳跃标签.我很有兴趣知道这GOTO
是不是邪恶并暗示代码不好?
Kon*_*man 143
除非您使用汇编程序进行编程,否则GOTO应始终采用与飞机救生衣相同的方式处理:提供它们是件好事,但如果您需要使用它们,则意味着您遇到了大麻烦.
Lor*_*ris 103
我不敢相信没人发布这个:)
诚然,PHP没有编译......也许猛禽会在每次访问你的网站时追逐你?
Rem*_*o.D 79
无论您使用何种控制结构,错误的代码结构都是邪恶的.
我个人更喜欢使用goto来清除程序流程中的"控制变量"和嵌套"if",这将间接地导致代码中的相同分支.
所以,只需编写两个版本(有和没有GOTO),看看哪一个更容易理解.然后选择很容易.
小智 18
我是少数(目前),但我相信对PHP的goto构造的限制是一个非常有益的工具:
http://adamjonrichardson.com/2012/02/06/long-live-the-goto-statement/
我实际上是通过一个箭头代码示例(深度嵌套的条件)并使用标准实践(保护条款,分组条件,提取函数)在一个版本中重构它,在另一个版本中使用基于goto的版本重构它,我实际上更喜欢基于goto的重构.
Dav*_*ers 10
枪是邪恶的吗?两者都可以用于善或恶.我会说没有goto就可以更容易地编写好的代码.
任何可以使代码在给定情况下更具可读性的语言功能都是一件好事.GOTO就是这样一种语言特征,即使这些情况很少也很少.如果我们禁止任何语法使得糟糕的程序员能够编写糟糕的,不可维护的代码,那么我们的工作就会变得非常困难.
作为一名软件工程师,我主要从事"大型机"和"大型企业服务器"......我们的日常语言(我的意思是95%的基本代码中的一种)是Cobol,它广泛使用GOTO.
这种用法并不意味着代码很糟糕.它只是意味着这个工具(GOTO)在编写程序时是正确的.
要回答Kaitsuli的问题,我认为它在编写PHP脚本时可能是有用的工具.另一方面,到目前为止,已经有很多脚本在没有它的情况下实现了近十年.此外,它反对PHP的进化与更多面向对象的功能.
恕我直言,对于代码的制作既不好也不坏:好的程序仍然会很好,"恐怖程序"会更糟......唯一的问题是:"为什么在证明没有必要的10年后添加GOTO? ".