GOTO仍然被认为是有害的吗?

GOTO仍然被认为是有害的吗?

出于纯粹的目的,我不会将Goto放在我的程序中,因此它在我的事项清单上排名极低。但这并不意味着它是不可接受的。

对于状态机而言,Goto是很好的选择。循环中的switch语句(按典型重要性顺序):(a)不能实际代表流程控制,(b)难看,(c)可能根据语言和编译器而效率低下。所以你最终会为每个状态编写一个函数,并执行像“return NEXT_STATE;”这样的操作,甚至看起来像goto。

当然,编写易于理解的状态机代码很困难。但这困难与使用goto无关,也不能通过使用替代控制结构来减少。除非你的语言有“状态机”结构。我的语言没有。

当您的算法确实是通过一系列节点(状态)之间的路径(转换)实现最清晰的时候,而不是通过任何更具体的控制流程(循环、条件语句等),那么这应该在代码中明确表示。您还应该画个漂亮的图。

setjmp/longjmp可以用于实现异常或类似异常的行为。尽管并不普遍受到赞扬,但异常通常被认为是一种“有效”的控制结构。

相对于goto来说,setjmp/longjmp更加“危险”,因为它们更难以正确使用,更不易理解。

从来就没有,也永远不会有任何一种语言,使得编写好的代码变得最简单。--唐纳德·科诺斯(Donald Knuth)。

将goto从C语言中移除并不能使在C语言中编写良好的代码变得更容易。事实上,这样做只会忽略了C作为一种可用作汇编语言的类型。

接下来可能是“指针被视为有害的”,然后是“鸭子类型被视为有害的”。那么当他们来收回您的不安全编程结构时,还有谁会为您辩护呢?

相关创作

邛崃电力营业厅
365bet手机网址

邛崃电力营业厅

📅 07-15 👁️ 4857
swissmiracle瑞士奇迹粉水怎么样_瑞士奇迹粉水好用吗
365bet现金信誉网

swissmiracle瑞士奇迹粉水怎么样_瑞士奇迹粉水好用吗

📅 07-03 👁️ 1328
炼金术为什么不可能实现呢?
下载365APP手机客户端

炼金术为什么不可能实现呢?

📅 07-21 👁️ 7075