科技时代新浪首页 > 科技时代 > 学园 > 正文

Linux下的代码淬火技术(5)


http://www.sina.com.cn 2006年08月30日 09:25 IT168.com

    6.降低代码的复杂性

    降低复杂性就等于降低出错的机率,因为代码越复杂,包含bug的可能性越大,并且找到bug的难度也越大。为此,我们可以将一个复杂的代码段,分解成多个更容易理解的几段代码。这样一来,随着代码的可维护性的提高,软件质量自然有很大提升。

    7.自保护性函数

    使用自保护性函数是一种有效的调试机制,它能保证软件的正确性。这里的自保护意味着,当你写一个函数的时候,必需审核该函数的输入;并且在输入数据处理成后,还要审核数据的输出,从而确保没有出错。下面我们用一个实例函数加以说明:

STATUS_T checkRegisterStatus( REGISTER_T register, MODE_T *mode )
            {
              REGISTER_STS_T retStatus;
           
              /* 验证输入 */
              assert( validRegister( register ) );
              assert( validMode( mode ) );
           
           
              /*--------------------*/
              /*这里省略checkRegisterStatus 的内部处理部分 */
              /*--------------------*/
           
           
              /* 可能改变了模式,检验之 */
              assert( validMode( mode ) );
           
              return retStatus;
            }

    注意,如果表达是结果为非(即0),assert函数就会停止应用,并在标准输出设备上生成一个错误消息。可以通过定义符号NDEBUG的方法来停用assert。

    从上例中我们看到,函数首先通过验证输入来确保得到的数据是正确的,然后通过验证输出来保证它给出的数据也是正确的。根据具体情况,我们可能收到错误消息,即使这样我们也能轻而易举地发现错误之所在。另外,assert的作用不仅限于确保函数的输入输出的正确性,还能用来确保内部的一致性。所有应该在调试期间发现的严重错误,都可以利用assert来轻松处理。

    8.优化调试输出

    太多的输出能够掩盖错误,但输出过少也会漏掉错误,因此我们需要寻找一个平衡点,使得提供的调试输出和错误消息够用,但又不会过量,这需要在实践中具体把握。

[上一页] [1] [2] [3] [4] [5] [6] [下一页]

本文导航:
·缓冲区溢出问题
·为分支语句提供备选方案
·自标识结构体
·错误报告
·自保护性函数
·编译器的支持

发表评论

爱问(iAsk.com) 相关网页共约18,600,000



评论】【论坛】【收藏此页】【 】【多种方式看新闻】【下载点点通】【打印】【关闭




科技时代意见反馈留言板 电话:010-82628888-5595   欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2006 SINA Inc. All Rights Reserved

新浪公司 版权所有