今天遇到了一段代码,类似下面

1
2
3
do{
...
}while(false)

开始很疑惑,为什么这样写,后来上网搜了一下才恍然大悟。这种语法是为了解决代码嵌套、实现goto的用途

下面是同样功能的三段代码

1、代码嵌套

1
2
3
4
5
6
7
8
9
if( A==true ) {
if(B == true) {
if(C == true) {
if(D == true){
//doSomething
}
}
}
}

这样箭头形代码很丑,且可读性差

2、goto代码

1
2
3
4
5
6
7
8
9
10
if( A==false )  
goto tag;
if( B==false )
goto tag;
if( C==false )
goto tag;
if( D==false )
goto tag;
//doSomething
tag:

3、do{}while(false)

这样的结构能够创造可读性良好的代码,又可以避免goto可能产生的问题

1
2
3
4
5
6
7
8
9
10
11
12
do  
{
if( A==false )
break;
if( B==false )
break;
if( C==false )
break;
if( D==false )
break;
//doSomething
}while(false);