BOOLflag;
…
if(flag){ // do something }// 正确的用法
if(flag==TRUE){ // do something }// 危险的用法
if(flag==1){ // do something }// 危险的用法
if(!flag){ // do something }// 正确的用法
if(flag==FALSE) { // do something }// 不合理的用法
if(flag==0){ // do something }// 不合理的用法
(4)小心不要将“= =”写成“=”,编译器不会自动发现这种错误。
(5)不要将123写成0123,后者是八进制的数值。
(6)将自己经常犯的编程错误记录下来,制成表格贴在计算机旁边。
6。3 小 结
C++/C程序设计如同少林寺的武功一样博大精深,我练了8年,大概只学到二三成。所以无论什么时候,都不要觉得自己的编程水平天下第一,看到别人好的技术和风格,要虚心学习。
本章的内容少得可怜,就象口渴时只给你一颗杨梅吃,你一定不过瘾。我借花献佛,推荐一本好书:Marshall P。 Cline著的《C++ FAQs》'Cline 1995'。你看了后一定会赞不绝口。
会编写C++/C程序,不要因此得意洋洋,这只是程序员基本的技能要求而已。如果把系统分析和系统设计比作“战略决策”,那么编程充其量只是“战术”。如果指挥官是个大笨蛋,士兵再勇敢也会吃败仗。所以我们程序员不要只把眼光盯在程序上,要让自己博学多才。我们应该向北京胡同里的小孩们学习,他们小小年纪就能指点江山,评论世界大事。
第七章 测试与改错
编程大师说:“任何一个程序,无论它多么小,总存在着错误。”
初学者不相信大师的话,他问:“如果一个程序小得只执行一个简单的功能,那会怎样?”
“这样的一个程序没有意义,”大师说,“但如果这样的程序存在的话,操作系统最后将失效,产生一个错误。”
但初学者不满足,他问:“如果操作系统不失效,那么会怎样?”
“没有不失效的操作系统,”大师说,“但如果这样的操作系统存在的话,硬件最后将失效,产生一个错误。”
初学者仍不满足,再问:“如果硬件不失效,那么会怎样?”
大师长叹一声道:“没有不失效的硬件。但如果这样的硬件存在的话,用户就会想让那个程序做一件不同的事,这件事也是一个错误。”
没有错误的程序世间难求。'James 1999'
错误是一种严重的程序缺陷。测试的目的是为了发现尽可能多的缺陷,并期望通过改错来把缺陷统统消灭,以期提高软件的质量。但关于测试与改错实在没有什么高明的方法值得大书特书,也不能表现出程序员的聪明才智。相反地,它们带来了更多的牢骚与痛苦。因此在教学和开发实践中,测试与改错总是被当作万般无奈的工作踢到角落里。
医生可以把他的错误埋葬在地下了事,但程序员不能。我们必须要学会测试与改错,并且把测试与改错工作做好。
7。1 对测试的理解
测试的道理并不深奥,计算机专业人员都应该明白。但就是这么简单的事,计算机专业的博士们也未必都已经理解。
有一天,一位比我聪明,编程比我快,学习能力比我强的计算机专业博士生恭恭敬敬地请我坐好,并且史无前例地削了苹果请我吃,为的是向我请教“软件工程”问题。你必定以为这位仁兄好学之极。非也,我和他同事三年来从未探讨过“软件工程”问题。只因为他明天要去应聘,参加面试,生怕被人问倒,就央我当晚为他恶补一把“软件工程”。他还特地问我“什么是白盒测试和黑盒测试?应该由谁来执行?”(有公司曾经这样面试应聘者)当我解释完测试的道理时,他叹了一口气说:“这些玩意儿我读大学十年来都没搞过,怎么能讲得出道理来。唉,就去碰碰运气吧。”我有“兔死狐悲”的感觉。我们这一群博士生三年来尽干些自欺欺人的事,到毕业时学问既不深也不博。个个意志消沉,老气横秋。长此以往,总有一天招聘会的大门前将贴出标语“博士与狗不得入内”。
以下是关于测试的几个重要观念。
7。1。1 测试的目的
测试的目的是为了发现尽可能多的缺陷。
这里缺陷是一种泛称,它可以指功能的错误,也可以指性能低下,易用性差等等。测试总是先假设程序中存在缺陷,再通过执行程序来发现并最终改正缺陷。理解测试的目的是个很重要的意识问题。如果说测试的目的是为了说明程序中没有缺陷,那么测试人员就会向这个目标靠拢,因而下意识地选用一些不易暴露错误的测试示例。这样的测试是虚假的。
目前高校的科技成果鉴定会普遍存在类似的虚假现象。我在读硕士时就亲身经历过这样的事。我们的项目是研究集成电路制造过程中的成品率问题。当时国内大多数工厂的集成电路成品率只有百分之几,我编写的示例程序可以将集成电路的成品率优化到98%。示例效果是如此的好,以致一位评委(某厂的总工程师)不无讽刺地说:“采用你们的成果,我们可要发大财了。”这个项目就轻易地通过了鉴定,并且不久后获得了电子工业部科技进步二等奖。这就象在考试时通过作弊取得了好成绩而被表扬。我那时尚且纯真,羞愧之余,不禁对高校科研成果的水平和真实性大失所望(现在我已不再失望,因为很少抱希望)。
一个成功的测试示例在于发现了至今尚未发现的缺陷。
测试并不仅是个技术问题,更是个职业道德问题。
7。1。2 测试的心理要求
测试主要是由人而不是由机器执行,这就不免与心理因素相关。为了测试的真实性,对测试的心理要求是“无情”。这似乎太残酷了。开发人员不能很好地测试自己的程序是因为做不到无情。而测试人员如果做到了无情却会引起开发人员的愤怒,遭人白眼。
尽管已经明白了测试的目的是为了发现尽可能多的缺陷,但当测试人员真的发现了一堆缺陷时,却不可乐颠颠地跑去恭喜那个倒霉的开发者,否则会打架的。
7。1。3 测试的真理
测试只能证明缺陷存在,而不能证明缺陷不存在。
这个真理告诉我们,对于一个复杂的系统而言,无论采取什么样的测试手段都不能证明缺陷已经不复存在。“彻底地测试”只是一种理想。在实践中,测试要考虑时间、费用等限制,不允许无休止地测试。
7。1。4 测试与质量的关系
测试有助于提高软件的质量,但是提高软件的质量不能依赖于测试。测试与质量的关系很象在考试中“检查”与“成绩”的关系。
学习好的学生,在考试时通过认真检查能减少因疏忽而造成的答题错误,从而“提高”了考试成绩(取得他本来就该得的好成绩)。
而学习差的学生,他原本就不会做题目,无论检查多么细心,也不能提高成绩。
所以说,软件的高质量是设计出来的,而不是靠测试修补出来的。
7。2 测试人员的选择
测试需要开发人员参与吗?
测试需要独立的测试小组吗?
测试需要用户参与吗?
让我们先看一看Microsoft公司关于测试的经验教训,再回答上述问题。
7。2。1 Microsoft公司的经验教训
在80年代初期,Microsoft公司的许多软件产品出现了“Bug”。比如,在1981年与IBM PC机一起推出的BASIC软件,用户在用“。1”(或者其他数字)除以10时,就会出错。在FORTRAN软件中也存在破坏数据的“Bug”。由此激起了许多采用Microsoft操作系统的PC厂商的极大不满,而且很多个人用户也纷纷投诉。
Microsoft公司的经理们发觉很有必要引进更好的内部测试与质量控制方法。但是遭到很多程序设计师甚至一些高级经理的坚决反对,他们固执地认为在高校学生、秘书或者外界合作人士的协助下,开发人员可以自己测试产品。在1984年推出Mac机的Multiplan(电子表格软件)之前,Microsoft曾特地请Arthur Anderson咨询公司进行测试。但是外界公司一般没有能力执行全面的软件测试。结果,一种相当厉害的破环数据的“Bug”迫使Microsoft公司为它的2万多名用户免费提供更新版本,代价是每个版本10美元,一共化了20万美元,可谓损失惨重。
痛定思痛后,Microsoft公司的经理们得出一个结论:如果再不成立独立的测试部门,
小说推荐
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 最新章:第26章
- Java编程思想第4版[中文版](PDF格式)
- -Page 1-Page 2《Thinking In Java》中文版作者:Bruce Eckel主页:http/BruceEckel.编译:Trans Bot主页:http/memberease~transbot致谢-献给那些直到现在仍在孜孜不倦创造下一代计算机语言的人们!指导您利用万维网的语言进
- 最新章:第295章
- 超级软件
- 《超级软件》作者:钓鱼超级软件 第一卷 大脑也能装软件序 章 君子以自强不息“李天纵,一起去玩魔兽,哥几个带你练级”下午最后一节课结束以后,教室里的同学都开始吵吵晚上要去哪里玩耍。被叫做李天纵的男生中等身材,外形俊朗阳光,薄薄的双唇紧紧抿着,显得很有性格。他略一犹豫,摇摇头“不了,下次吧,我等会还有
- 最新章:第330章
- 交友软件
- 《交友软件》作者:安颜 文案 论约到自己男神是种什么体验 演技负分智商下线总裁攻x外表冷漠内心狂热美人受 炮友变情人 一个演技负分一个配合表演最后还演到一起去的故事 1v1 狗血有 小虐有 女装有第一章 祁明思第一次在交友软件上看到这个男人(也可能是个男孩)的照片的时候,出于对美的事物的欣赏,默默点
- 最新章:第30章
- 修仙软件
- 作者:稀凤】正文第一章 穿越异界和煦的春光照在千灵峰后山,一阵清风吹过,带着淡淡菊花香,诱人入睡。竹叶斑斑,菊花遍开,昭示这座山峰的灵秀。萧泽尧躺在山丘上睡觉,面朝太阳。来这个世界也有三个多月了,他现在所在的门派是三大正宗的仙门,其他两巨头是神殿和圣谷。混沌初开,天地有别,有仙自然有魔。伫立于三大正
- 最新章:第132章
- 软件帝国
- 《软件帝国》作者:香港大亨[软件帝国 香港大亨 著/书籍介绍:何笑的大脑中有个炼丹炉—炼的不是丹药,而是程序和软件!卡巴斯基很牛?放到何笑的炉子中炼一炼,就可以炼出比卡巴斯基还牛的杀毒软件。网站开发很难吗?额,把网站转移到炼丹炉中炼一晚上,一个更完美的网站系统被开发出来了.这是全新的创意,一个能带给
- 最新章:第268章
- 未来软件
- [未来软件 迪厅肥猫 著]书籍介绍:罗宁,刚刚失恋的他又丢了工作。可谓赔了夫人又折兵。但是这也是他奇遇的开始“你是谁“我是你未来的老婆“我去!真的假的”一部山寨手机!但是软件很牛奔!不但可以跟未来的老婆聊天,还能玩各种各样的‘特殊游戏’于是乎他成了世界上最牛奔的主。喜欢的筒子加群:33629503-
- 最新章:第268章
- 我是杀毒软件
- 好书尽在.w 文案 我游走在黑暗与光明之间,杀戮是我的挚友,邪恶是我的仆从,白骨累累化作我的权杖,鲜血殷殷染红我的披风,阴冷双翼所过之处,死亡的哭号必将震天动地 我是死神 同时也是一个杀毒软件。第一章 杀毒程序小兵 每一次呼吸之间,都像是一万年那么漫长 记忆中的碎片不断组合,重叠,犹如一场场离奇的梦
- 最新章:没有后记的后记
- 都市之超神软件
- 简介:刘小陈意外获得一个来自两千年后的手机软件,从此开始非凡人生!拳打流氓汉!脚踹装逼犯!从来不怂,就是爱干“如果有一天你看见我暴打装逼犯,哥想说,哥打的不是人,是无敌的寂寞”书友兄弟群:98295第1章 叫的这么销魂)齐州市大马路上“啪”当爱疯6被摔在地上那一刻,刘小陈双眸呆滞,不敢相信!这爱疯6
- 最新章:第459章