Goto被认为是有害的,但有没有人尝试使用goto可重用和可维护的代码?

时间:2012-09-05 10:04:54

标签: goto

每个人都知道Dijkstra给编辑的信件:go to statement considered harmful(这里也是.html成绩单和.pdf)。我想知道是否有人试图通过添加任何其他语言扩展或开发允许使用的语言来使用goto的可重用和可维护且无害的方法来创建代码。

我问这个问题的原因是我发现用汇编语言编写的代码经常使用goto和全局变量来使程序在有限的空间内正常工作。 Atari 2600有128个字节的ram,程序是从ROM盒装入的。在这种情况下,最好使用非结构化编程,并充分利用自由,这样可以充分利用程序的空间。

当你将这个与今天没有使用gotos的游戏进行比较时,游戏会占用更多的空间。

然后我发现,如果使用某些规则或其他语言变化来支持这种情况,也许可以使用gotos编程,那么可以减少或消除gotos的负面影响。有没有人试图找到一种方法,通过创建一种语言或一些规则来使goto不被认为是有害的,这些规则允许getos无害。

如果没有人寻找以无害方式使用gotos的方法,那么我们采用的结构化编程可能不一定完全基于本文吗?也许还有另一种解决方案,允许在没有下端的情况下使用gotos。

2 个答案:

答案 0 :(得分:1)

将gotos与结构化编程进行比较是比较程序员必须记住代码中的每个标签实际意味着和做什么的情况,以及存在的情况,以及明确描述条件分支的情况。

关于goto statement关于程序可能占用的地方的优势,我认为今天的游戏很大,因为他们使用的图形和声音资源。也就是说,显示1,000,000个多边形。与此相比,goto的成本完全可以忽略不计。

此外,结构语句在输出汇编时最终由编译器编译成goto(“jmp”)语句。

要回答这个问题,可以通过创建命名和语法约定来降低goto的危害。然而,将这些约定强加于规则是结构编程所做的。

Linus Torvald argued once goto可以使源代码更清晰,但goto在非常特殊的情况下非常有用,我不敢将它用作程序员。

答案 1 :(得分:0)

This question与您有关,因为我认为这是需要goto的最常见情况之一。