查BUG笔记-一个令人尴尬的低级错误-if-else的分支

业务有bug,需要在同事的代码上修改问题,引出了这个bug;

问题

原来的代码是这个样子的,程序中有三种情况,现在需要在CalculateMode::SUB分支中增加一个条件,因为下面代码是在循环中,我就将条件&&到了CalculateMode::SUB == mode条件之后,没看到可能会走到else分支。出现了CalculateMode::SUB == mode,但结果执行到了else分支;else分支对应的是CalculateMode::SUB == DIV

int mode = 0;
if (CalculateMode::ADD == mode) {
    
    
	//code 1;
}
else if (CalculateMode::SUB == mode) {
    
    
	//code 2;
}
else {
    
    
	//code 3;
}

代码改成了下面这个样子:

int mode = 0;
if (CalculateMode::ADD == mode) {
    
    
	//code 1;
}
else if (CalculateMode::SUB == mode) {
    
    
	if (new condition){
    
    
		//code 2;
	}	
}
else if (CalculateMode::DIV == mode){
    
    
	//code 3;
}

在想是这种方式好呢,还是之前那种if-else的方式好呢,下面这段代码,起码不会出现之前的bug了;

猜你喜欢

转载自blog.csdn.net/liushao1031177/article/details/120780609