Closed 。这个问题是基于意见的 /help/closed-questions 。目前不接受答案。
每个人都知道迪杰斯特拉 (Dijkstra)给编辑的信:转到被认为有害的声明 http://portal.acm.org/citation.cfm?doid=362947 (also here http://www.cs.utexas.edu/%7EEWD/transcriptions/EWD02xx/EWD215.html .html 成绩单和here http://www.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF .pdf),从那时起,人们就强烈要求尽可能避免使用 goto 语句。虽然可以使用 goto 生成不可维护的、庞大的代码,但它仍然存在现代编程语言 http://msdn.microsoft.com/en-us/library/13940fs2(VS.71).aspx 。即使是高级的延续 http://en.wikipedia.org/wiki/Goto#Continuations Scheme 中的控制结构可以描述为一个复杂的 goto。
什么情况下需要使用 goto?什么时候最好避免?
作为后续问题:C 提供了一对函数 setjmp() 和 longjmp(),它们不仅提供在当前堆栈帧内跳转的能力,而且还提供在任何调用帧内跳转的能力。这些是否应该被视为与 goto 一样危险?更危险吗?
迪杰斯特拉本人对这个头衔感到遗憾,他对此不负有责任。在......的最后EWD1308 http://www.cs.utexas.edu/%7EEWD/transcriptions/EWD13xx/EWD1308.html (also here http://www.cs.utexas.edu/%7EEWD/ewd13xx/EWD1308.PDF .pdf)他写道:
最后写一个小故事作为记录。
1968年,ACM通讯
在以下下发表了我的一篇文章
标题 ”考虑的 goto 语句
有害 “,这将在以后的几年里
最常被引用的,
然而遗憾的是,作者常常
谁只见过它
的称号,成为了它的基石
我因成为模板而名声大噪:我们
会看到下面的各种文章
标题“X 被认为有害”
几乎所有 X,包括标题为
“迪杰斯特拉被认为是有害的”。但
发生了什么事情?我已经提交了一份
论文标题为“反对的案例
goto 语句 “,其中,按顺序
为了加快其出版速度,
编辑已改为“致
编辑”,在这个过程中他
给它起了一个自己的新标题
发明!编辑是尼克劳斯
沃斯。
关于这个主题的一篇经过深思熟虑的经典论文,与 Dijkstra 的论文相匹配,是使用 go to 语句进行结构化编程 http://www.clifford.at/cfun/cliffdev/p261-knuth.pdf ,唐纳德·E·高德纳 (Donald E. Knuth)。阅读两者都有助于重新建立背景和对主题的非教条理解。在这篇论文中,Dijkstra对此案的观点进行了报道,并且更加强烈:
唐纳德·E·高德纳 (Donald E. Knuth): 我相信通过提出这样一个
我其实并不反对
与 Dijkstra 的想法截然相反,因为
他最近写了以下内容:
“请不要落入陷阱
相信我很糟糕
关于[去
陈述]。我有不舒服的地方
感觉别人正在做一个
宗教脱离了它,仿佛
编程的概念问题
可以通过一个技巧来解决
一种简单形式的编码规则! "
我的一位同事说,使用 GOTO 的唯一原因是,如果您将自己编程到了一个角落,那么这是唯一的出路。换句话说,提前正确设计,以后就不需要使用 GOTO。
我认为这部漫画完美地说明了“我可以重组程序的流程,或者使用一个小‘GOTO’来代替。”当设计薄弱时,GOTO 是一种薄弱的出路。迅猛龙捕食弱者 .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)