1968 年,Edsger Dijkstra 发表了一篇名为“Go To 语句被认为有害”的经典信件。标题虽有误导,但实际上是对结构化编程的劝诫,且这种说法没错,信中确实认为goto
有害。
Dijkstra 的观点完全正确,历史也证明了他的观点。他赢了,“赢”是过去时态,胜利已完成,goto
已“死”,他所谈论的那种可以随意跳跃到任何地方的goto
已不存在于现代语言中,现代语言中的goto
已被结构化编程范式严格约束,不能在if
语句、for
循环等中间进行跳转。
从现代观点看,Dijkstra 抱怨的那种goto
不仅能随意跳转,还导致当时程序的组织原则存在问题,从而阻止了函数的存在,因为在无约束的goto
存在时无法保证函数的提供。
不要将 20 世纪 60 年代对goto
的批评应用于现代goto
,不要因为在函数中使用一次goto
就认为自己是个糟糕的程序员。停止贬低现代goto
,它不是特殊的威胁,字符串强类型化比goto
的威胁大得多。实际上,看到现代代码使用goto
,可能意味着是由高技能程序员编写的,因为他们理解问题,知道现代反goto
的共识是错误的,且在某些情况下goto
是最佳解决方案。不要对goto
感到恐慌,不要将 20 世纪 60 年代的goto
与今天的goto
等同。这只是个人抱怨的博客话题,若要从中获取实际东西,可重新阅读信件或首次阅读,将goto
相关内容编辑掉后阅读其余部分,能了解编程环境及整个编程行业选择该环境的原因等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。