原创 评“程序员怎么样才能保证自己的程序没有BUG”收藏


评“程序员怎么样才能保证自己的程序没有BUG

 
代码复核(Review)是为了找错误吗?看代码能看到逻辑错误吗?
不,跑测试程序都不能找到错误,看代码怎么可能看出来?
复核代码的目的有:
* 检查代码是否规范,如命名规范,注释
* 保证一段代码至少有两人共同熟悉,可以由任一人来更改。
* 检查设计思想是否如实实现,代码如何表达设计
* 审察未文档化的细节设计,即由代码直接表达的设计,由代码人口述设计并对照代码
* 检查是否暴露出原设计的缺陷,需要重新设计?


程序员是否认为自己的程序有错误?
自信没有错误和怀疑代码还有错误,哪个是正确的心态?
我认为程序员永远都不会有100%的自信。
即使程序已经发布,被用户接受很长时间,只有好评没有抱怨,依旧不能确认有没有错误。
只能假定错误是永恒的,它们一直在那里,只是不到条件爆发。
一个程序员能做的就是,排除所有肤浅的错误,加大隐藏错误出现的几率并找到它们,
采用一些容错性代码减小可能的错误,减少程序发布后爆发的机率。


测试的目的是为了发现错误,
但是单元测试,功能测试的覆盖度能有多高?
没有100%覆盖的测试。就是说,总是有一些状态是测试不到的。
代码人员认为不可避免地存在错误,需要测试,测试人员认为测试覆盖度不可能100%,还是要代码小心。
这是一个头痛的问题,结果是没有完美的程序。

单元测试是白箱测试,可以根据代码实现将注意力放到最关键的部位。
但仍然不是100%覆盖的。
单元测试一般针对的是边界数据,不要求覆盖度,而更要求有效性。
其目的更主要的是保证代码更改不会破坏原有的正确性,是提供保障而不是查找故障。


保证没有错误的唯一方法是不写代码,减少错误的最好方法是少写代码。
简单的设计和实现是减少错误的最佳方法。简单的代码错误必定少。
画蛇添足式的功能则是最大的错误发源地。
 

发表于 @ 2006年07月07日 17:15:00|评论(loading...)

新一篇: 评程序员的八荣八耻 | 旧一篇: `ios_base' undeclared 错误及解决

用户操作
[即时聊天] [发私信] [加为好友]
金庆
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
金庆的公告
XSTL封面 Locations of visitors to this page Codeguru Contributor
订阅 上海程序员
文章分类
收藏
    热门文章
    1 评“程序员怎么样才能保证自己的程序没有BUG”
    2 C语言HTML解析器ekhtml的VC编译
    3 log4cpp应用速成手册
    4 一个hash_map使用错误
    5 udp广播与直接广播
    6 评“加班文化”对软件企业的危害
    作者推荐
    1 设计死了吗?
    2 葵花宝典:软件开发高手是这样炼成的!
    3 TCP截包分段重组的设计
    4 Firefox的HTTP内容解压代码阅读
    5 不可思议:using namespace无效!
    6 作业调度问题深度搜索定界算法
    7 智能机器人编程游戏robocode的运行代码简析
    存档
    Csdn Blog version 3.1a
    Copyright © 金庆