取代goto语句的方法

190 篇文章 0 订阅
162 篇文章 1 订阅

许多程序设计文章,包括某些教材,都反对goto语句的滥用,甚至强调不用goto语句。
问题在于对于某些程序逻辑,一些初学者找不到更好的替代方法,下面给出两个常用技巧以解决这个问题。
1。利用do...while(0)语句
对于较深的if_then嵌套,当某个条件满足时,需要跳出整体判断逻辑,此时取代goto的就是break,例如:

   do
         if cond1 then
              if cond2 then
                   break;//
              else
                   do_other
              endif
        else if
              break;//
        else
              dothing
        endif
   while(0)
   ...

看似没有意义的语句,确发挥了意料之外的作用,此方法适用于大部分语言。
一些开放源代码项目,如果是c语言代码,多采用此策略。
2。利用异常机制
显然这个方法需要语言具有异常机制,对于一个较长的程序段,加上内部逻辑嵌套较为繁杂,如果采用抛异常的方法,既可以轻松转向,又可以捕获相应的程序状态,下面是一段c++事例代码:
{
 class do_failed{};//在这个类中可以定义相应的提示信息

try{ 
           res=dofun1();
          if(res)
          {
                     throw do_failed(res);
          }
            res=dofun2();
           if(res)
          {
                      throw ftp_failed(res);
         }
         if(dofun3())
          {
                       throw ftp_failed();
          }
 
           dofun();

           return true;
 
}catch(...)
{
            do_failed.msg();
            return false;
}
}
利用异常机制应该算是比较完善的解决方案。从以上两个例子,也可以体会到策略和机制的区别。
 

其他文章:

.NET 与安全性—— 数据加密算法

在VC中使用 Flash 美化你的程序

C语言面试题大汇总

指定内存0X000000不能为只读的错误分析

调频电子琴的c源码

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suprman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值