举个例子:你去商店买裙子,进入商店后发现只有一条(假设哈)。你想要红色的连衣裙。有个Check函数,以商店的裙子作为参数,检查它是否符合你的要求。符合则付钱,然后离开,不符合直接离开。
那么正常情况的代码如下:
bool Check( item )
{
if( 是连衣裙 )
{
if(是红色)
{
if(合身)
{
付钱
}
}
}
离开商店
}
当条件不适合的时候,就要跳过付钱环节,但离开商店是必须得做的。是不是觉得这个if的嵌套太复杂呢?如果还不明显,你可以在条件中再加入价钱等其他更多的条件,这样,这个深层次的if嵌套就很不美观了。(换用否定条件也不能改变if的嵌套)
而如果使用do-while(false),则可去除这种嵌套。代码变成如下:
void Check( item )
{
do
{
if( 不是连衣裙)
break;
if( 不是红色 )
break;
if( 不合身 )
break;
付钱
}while(false);
离开商店
}
这样,嵌套的if变成了并列的,代码变得简洁,不再需要老远的去寻找一个括号到底跟谁配对.do-while(false)轻松去掉了麻烦的多层嵌套,即使再多条件也不怕。
虽然以前也遇到了这类问题,却没想到这样的解决方法。妙哉,妙哉。不过此方法并不被广泛使用,用在代码里可能引起别人的误会。所以用还是不用,全凭大家自己斟酌。