C/C++程序员或者初学C/C++都会遇到goto的问题,是否该使用goto,一派是坚决抵制,坚决不用,goto使程序难以分析,并且用code证明任何goto都是不必要的,都可以进行合理替换;另一派坚持goto使程序更简洁,能够很好的统一处理程序的异常情况。针对哪种语言是最好的,以及语言中的特定性质,我从来没有倾向性,不会选择战队。每种语言都有自己适用的情形,每种性质都有存在的合理性。goto就像一把切菜刀,用好了,锋利无比,能够切肉切菜,做出美味;用不好,可能伤到自己,甚至伤到别人。所以想用好菜刀必须要小心,提高警惕,不能麻痹大意。
我自己写的code和项目中遗留的code,使用goto的情形都是程序遇到异常情况,需要提前退出,统一做error handling,释放内存等。但是如何小心,还是出了错。
简单描述一下code的逻辑,code是分层的,我负责的层属于中间层,中间层下面是底层,和硬件打交道,中间层和硬件的交互都是通过底层实现的,中间层和底层有一套比较标准的接口,中间层传入底层的参数是什么,底层应该返回中间层什么结果,事前都有明确的描述,当然中间层针对底层的返回结果需要做一些保护,因为底层可能返回一些错误结果,可能是合理情形。
sample code
int testSample(void) {
// Line是一个类,底层的返回结果类型就是Line,Line中有保存数据的元素data和有解析读取返回结果的各种函数。
Line *line = NULL;
char *respons