Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > 不要轻易跳转程序控制流程——少用break、continue与return
【标  题】:不要轻易跳转程序控制流程——少用break、continue与return
【关键字】:break,continue,return
【来  源】:http://www.cublog.cn/u/13684/showart.php?id=105613

不要轻易跳转程序控制流程——少用break、continue与return

Your Ad Here
不要轻易跳转程序控制流程——少用break、continue与return
最近调试程序时遇到一bug,花了近一天时间才找到原因。而这错误原本是完全可以避免的——如果写程序规范一点的话。
引起错误的代码逻辑大致如下:
while(true)
{
    isoK = applyResource();
    if (isOk)
    {
        // do some job
        if (condition)
        {
            // ...
            break;
        }
    }
    if (something)
    {
        // ...
        continue
    }
    // ...
    releaseResource();
}
代码不长,但是里面有两处bug,这次被触发的就是其中一处。程序的本意是每次循环开始时申请资源,退出时释放资源。但是代码中的break和continue语句却导致流程的跳转,最终资源耗尽,引起程序错误。(applyResource的设计本身也有问题,另文讨论。)
总说写程序时尽量避免控制流程的跳转,尽量少用break、continue和return这些会改变流程的语句,甚至亏也吃了不止一次,可就是不当回事。不光这次,我在实际工作中看到、听到的大部分问题如果按照教科书上的规范做法去写代码都可以避免。可是大家宁愿一再地出bug也不愿规范的写代码:或者认为规范写法太复杂,或者认为规范写法多此一举。
这次又遇到这样的bug,对代码作者,我实在是无话可说了。唯一想做的是仰天长啸,但在公司的格子里这么做又未免太出风头了,只好憋着。
jsp问题实录:【上一篇】
CSS 文件的简单说明:【下一篇】
【相关文章】
  • js中的break和countinue子句的语法
  • SHELL十三问之二:shell prompt(PS1) 与 Carriage Return(CR)
  • a break in .net 2.0 remoting
  • (vs.net2005 对c++library的二十个不兼容) -------Breaking Changes in Visual C++ 2005
  • 12.3.3.12 Return statements
  • 12.3.3.10 Break, continue, goto statement
  • error C2533:constructors not allowed a return type
  • 今年的prison.break已经看到尽头了
  • A value returned to a function without a `return' statement?
  • C# 2.0 新特性之迭代器, Yield Return
  • 【随机文章】
  • 美国电影分级制度
  • Heartbeat_2.0.3配置MySQL5.0.18为高可用集群
  • 如何更改Access默认的中文输入?
  • 写给Linux内核新手-关于Linux内核学习的误区
  • GoLive 5教程 1.3 设置Web页面属性
  • 关于SUN的StorEdge 3310的安装调试过程
  • 用命令行查看HP 9000系统软硬件配置
  • ACAD.PGP文件的重新初始化
  • HP-UX系统备份与恢复全功略
  • 企业局域网网速减慢的故障解决办法
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.