• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php goto语句的利弊详解

php 搞代码 3年前 (2022-01-22) 25次浏览 已收录 0个评论

一看就知道是goto和call分不清的孩子

然后在群里敲代码的时候,小猫用了Do…Loop循环,结果群里有个小朋友问Do…Loop循环是什么?-_-|||结果一群人都说很少用Do…Loop循环,大部分都喜欢用Goto,我才发现这个问题,并不是说不能用Goto,而是少用Goto!!!

废话讲完了,开始正题

先为新手解释下Goto和Call的区别

Goto是用来跳转代码的,即当代码执行到Goto时,跳转到Rem指定的位置向下执行,它不会在执行完时,返回到Goto语句的下一条。

Call也是用来跳转代码的,但是更准确的说,Call是用来调用子程序的!何为调用?即执行到Call时,将指定的子程序(Sub)放到代码中,当子程序执行结束后,它会回到Call语句的下一条,继续向下执行。

如果很难理解,那就用刚开始提到的那位同学的代码来解释吧:

这是Goto语句

这是Call语句

1.      a=152.      b=103.      if a-b < 154.          goto sub1//跳转至Rem sub1处,且不会再跳回来了!!!5.          if a-b > -156.              goto sub27.          end if8.      end if9.       10.   Rem sub211.   MsgBox "a-b大于-15"12.    13.   Rem sub114.   MsgBox "a-b小于15"//脚本到底部了,执行结束!!!
1.      a=152.      b=103.      if a-b < 154.          call sub1//调用sub1子程序,当子程序执行结束后,返回到此处,继续向下执行5.          if a-b > -156.              call sub27.          end if8.      end if9.       10.   Sub sub2()11.       MsgBox "a-b大于-15"12.   End Sub13.    14.   Sub sub1()15.       MsgBox "a-b小于15"16.   End Sub

OK,两种区别讲清楚了,现在来讲讲这次的主题,关于Goto语句的利与弊!!!

我上面说过,我提倡Goto要少用,绝对不能滥用,其中,最主要的一个原因是,Goto语句破坏了程序结构,使程序可读性变差,你用一个,两个或许影响不大,但是你如果用了十几个Goto呢?

下面这段话摘自百度百科(如果大家觉得太多了,那么你只需看“goto语句的结果”那一段)

问题起源:

  60年代中期以后,计算机硬件技术日益进步,计算的存贮容量、运算速度和可靠性明显提高,生产硬件的成本不断降低。计算机价格的下跌为它的广泛应用创造了极好的条件。在这种形势下,迫切要求计算机软件也能与之相适应。因而,一些开发大型软件系统的要求提了出来。然而软件技术的进步一直未能满足形势发展的需要,在大型软件的开发过程中出现了复杂程度高、研制周期长、正确性难以保证的三大难题。遇到的问题找不到解决办法,致使问题堆积起来,形成了人们难以控制的局面,出现了所谓的“软件危机”。为了克服这一危机,一方面需要对程序设计方法、程序的正确性和软件的可靠性等问题进行系列的研究;另一方面,也需要对软件的编制、测试、维护和管理的方法进行研究,从而产生了程序设计方法学。

  goto语句是有害的观点:

  1968年,E·W·代克斯特拉首先提出“GOTO语句是有害的”论点,向传统程序设计方法提出了挑战,从而引起了人们对程序设计方法讨论的普遍重视。

  goto语句的争论:

  在60年代末和70年代初,关于GOTO本文来源[email protected]搞@^&代*@码)网9搞代gaodaima码语句的用法的争论比较激烈。主张从高级程序语言中去掉GOTO语句的人认为,GOTO语句是对程序结构影响最大的一种有害的语句,他们的主要理由是:GOTO语句使程序的静态结构和动态结构不一致,从而使程序难以理解,难以查错。去掉GOTO语句后,可直接从程序结构上反映程序运行的过程。这样,不仅使程序结构清晰,便于理解,便于查错,而且也有利于程序的正确性证明。

  持反对意见的人认为,GOTO语句使用起来比较灵活,而且有些情形能提高程序的效率。若完全删去GOTO语句,有些情形反而会使程序过于复杂,增加一些不必要的计算量。

  关于goto语句的解决方法:

  1974年,D·E·克努斯对于GOTO语句争论作了全面公正的评述,其基本观点是:不加限制地使用GOTO语句,特别是使用往回跳的GOTO语句,会使程序结构难于理解,在这种情形,应尽量避免使用GOTO语句。但在另外一些情况下,为了提高程序的效率,同时又不至于破坏程序的良好结构,有控制地使用一些GOTO语句也是必要的。用他的话来说就是:“在有些情形,我主张删掉GOTO语句;在另外一些情形,则主张引进GOTO语句。”从此,使这场长达10年之久的争论得以平息。

  后来,G·加科皮尼和C·波姆从理论上证明了:任何程序都可以用顺序、分支和重复结构表示出来。这个结论表明,从高级程序语言中去掉GOTO语句并不影响高级程序语言的编程能力,而且编写的程序的结构更加清晰。[/hide]

  goto语句的结果:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php goto语句的利弊详解
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址