今天测试反馈项目有个bug,大概情景是一段代码中,有多段if条件,如果在某一个条件下,数据不能入库。项目中的逻辑很复杂,下面我抽象一个类似的例子来说明一下。

类似场景是:

function fun(){
if(a){    
#coding
}
if(b){
#coding
if(B){
return;
}
}
if(c){
#入库操作
}
}

以上抽象场景代码中,abc三个条件是并列的,最初目标是三个条件互不干扰,但是在b条件中,如果满足B条件,直接做了return操作,c条件就不会执行。

定位到问题之后,目的就很明确了,我希望满足B条件时,跳出b的if语句,继续执行c条件。

修复后的代码是:

function fun(){
if(a){
#coding
}
if(b){
#coding
if(B){
goto S;
}
}
S:
if(c){
#入库操作
}
}

以上解决方案使用了goto语句,标识跳转到某个位置,注意标记位置S:后面是冒号,不是分号,问题解决。

其实还有另外的方案,比如说把可能会阻断的条件放到最后,也就是bc条件互换位置,也能解决这个问题。

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/blog/post/12