尴尬的goto语句

来源:互联网 发布:java.培训班哪个好点 编辑:程序博客网 时间:2024/04/29 14:11

以前看过的effect xxx之类的书,总是会少不了这一条:避免使用goto语句

理由很简单,你一段代码一会跳这里,一会跳那里,跳来跳去就晕了,犹如在迷宫之中

看起来是很有道理,但是在实际运用中,不大会有人这么乱跳

有些情况下,goto反而是一种更加优雅的方式。比如:

 

1.多重循环

跳出循环用break,如果跳出多重循环呢?这种例子屡见不鲜,大家也都有自己的应对方式:标志变量。

但是如果用goto的话是不是会更直接更易读呢?

在Java中,仅此情况允许使用goto,是很有道理的。

 

2.资源回收

在我看来这种情况比多重循环更加典型。

假设一种很常见的情景:你在函数开始部分initialize一大堆模块,又malloc了不少堆内存,你需要在函数结尾去释放他们。

但是在函数的过程中有很多步骤,一步失败就停止执行并退出。

这时如果直接return的话,要在return之前写很多释放的语句,有n个步骤就有n个return,释放语句要写n遍,这简直是噩梦。

在我看来,最优雅的方式就是在函数结尾做一个exit标志,后面是释放语句,哪个步骤如果执行失败,就直接goto exit,简洁易懂

 

在我看来,没有不好的语法,只有不好的程序员。现在提倡不用的一些语法,也不是绝对的,只是说很多人在这里栽过跟头,如果你没有十足的把握,还是尽量不要用,免得以后陷入debug的泥潭不能自拔

原创粉丝点击