do{}while(false) 小技巧

本文通过一个购买裙子的例子,详细解释了如何使用do-while(false)来简化代码结构,减少if嵌套,使代码更加清晰易读。这种方法虽然不常见,但在特定情况下能有效提升代码质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

do-while(false)?那不就是只执行一次吗?加这个还有什么用,我是不是眼睛花了?初看到这个代码的时候,我也这么想。不过再仔细看看,我发现do-while(false)也有它小小的妙用。

举个例子:你去商店买裙子,进入商店后发现只有一条(假设哈)。你想要红色的连衣裙。有个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)轻松去掉了麻烦的多层嵌套,即使再多条件也不怕。

  虽然以前也遇到了这类问题,却没想到这样的解决方法。妙哉,妙哉。不过此方法并不被广泛使用,用在代码里可能引起别人的误会。所以用还是不用,全凭大家自己斟酌。

转载于:https://my.oschina.net/yueguanqun/blog/61631

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值