goto的优点与缺点?

来源:百度知道 编辑:UC知道 时间:2024/06/19 17:07:14
goto有时候给程序的跳转带来很大的方便,但是有时候跳来跳去会降低程序的可读性,应该如何解决?谢谢……

林锐在<<高质量c/c++编程>>里面这样说的:

4.7 goto 语句
自从提倡结构化设计以来,goto 就成了有争议的语句。首先,由于goto 语句可以
灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次,goto 语句经常带来错
误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句,例如:
goto state;
String s1, s2; // 被goto 跳过
int sum = 0; // 被goto 跳过

state:

如果编译器不能发觉此类错误,每用一次goto 语句都可能留下隐患。
很多人建议废除C++/C 的goto 语句,以绝后患。但实事求是地说,错误是程序员
自己造成的,不是goto 的过错。goto 语句至少有一处可显神通,它能从多重循环体中
咻地一下子跳到外面,用不着写很多次的break 语句; 例如
{ ⋯
{ ⋯
{ ⋯
goto error;
高质量C++/C 编程指南,v 1.0
2001 Page 32 of 101
}
}
}
error:
...
就象楼房着火了,来不及从楼梯一级一级往下走,可从窗口跳出火坑。所以我们主
张少用、慎用goto 语句,而不

可读性肯定是会降低的。看到goto还要去找相应的标签,肯定降低可读性。
至于是不是用了就不好,我觉得无所谓。
对自己写的程序,如果逻辑过程很清晰,用用又何妨。
存在就有其必然性。
在JAVA中随便没有设定goto,但是有个实现部分goto功能的break。
证明goto这种方法是有其存在的必要性的。

绝大多数地方的要求是:绝对不用goto 。 基本上设计好的C++程序是不需要用goto的

我个人的观点是不必太强求,如果确实没有goto需要多写n层循环加m个flag之类的,那也许还是用g