- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
沈阳东软软件股份有限公司 NEU-APN IA事业部 (机密) 防错必要性及其方法 课程主要内容 防错的必要性、方法 问题与习题 主要内容 1.1 防错及其意义 1.2 把防错作为工作习惯 1.3 防错常识 1.1 防错及其意义 防错 就是预防错误的发生。 这里讨论的问题基本上代码防错。 这里讨论的防错实施者是编程人员,非测试人员; 防错意义 提高产品质量 减少Bug的数量 增加程序健壮性 提高开发效率 通过防止错误的发生,检查排错的时间;一般来讲防错投入的价值要远远大于排错的投入 一个错误不仅仅会给(产生这个问题的)开发者的工作增加阻碍,而且往往会导致整个团队工作的停滞;因此,错误的及早避免和发现(尽可能在开发时就避免),会对提高团队的开发效率产生积极意义; 降低开发风险 避免因质量问题带来的工期延期; 避免项目成本超出预算; 1.2 把防错作为工作习惯(1) 避免自己的编码产生错误 你代码有容错处理吗? 如下面的例子: int AAA( char *p) { char c; …. *p =c; ….. } 如果参数p传入是空指针,程序运行结果会怎样?程序会崩溃。。 正确处理应该: int AAA( char *p) { char c; ASSERT( NULL != p); if (NULL != p) return ERR_NULL; …. *p =c; } 1.2 把防错作为工作习惯(2) 你的代码存在内存泄漏? ???? char*????AllocStrFromHeap(int?len)?{?????????char?*pstr;?????????????????if?(?len?=?0?) ?return?NULL;?????????return?(?char*?)?malloc(?len?);?}? 这只是一个内存分配的过程;如果在程序退出前不释放,就会造成内存泄漏。 不要忽略warning 常见的warning包括 声明了未使用的变量 使用了隐晦声明的函数。(也许这个函数在别的C文件中,编译时会出现这种警告,你应该这使用之前使用extern关键字声明这个函数) 没有转换一个指针。(例如malloc返回的指针是void的,你没有把之转成你实际类型而报警,还是手动的在之前明显的转换一下吧) 类型向下转换。(例如:float?f?=?2.0;?这种语句是会报警告的,编译会告诉你正试图把一个double转成float,你正在阉割一个变量,你真的要这样做吗?还是在2.0后面加个f吧,不然,2.0就是一个double,而不是float了) 。。。 不管怎么说,编译器的Warning不要小视,其中可能有错误的线索。 1.2 把防错作为工作习惯(3) 避免别人使用自己的代码产生错误 你的程序有注释? 养成写程序注释的习惯,这是每个程序员所必须要做的工作。有一个几千行的程序,却居然没有一行注释的程序。这就如同在公路上驾车却没有路标一样。 为了方便自己和别人的阅读,请清晰的为代码写上注释。 程序对外接口函数有详细的说明? 为了方便别人调用你的函数,避免产生错误,说明应该包括: 函数功能的说明 调用函数的时序:如有时序图最好,至少应该描述是同步还是异步 函数的参数说明:是输入还是输出、有效输入范围等 返回值的详细说明 相关函数的说明 1.2 把防错作为工作习惯(4) 避免自己使用别人的代码产生错误 调用函数,判断返回数值了? 请看下面的代码 FILE * fp; fp = fopen(BMP3.SD,r+b); i=fread(a, 100, 1, fp); 如果fopen不成功,程序的运行结果会如何? 正确的处理应该: FILE * fp; fp = fopen(BMP3.SD,r+b); if (fp == NULL) { return ERR; } i=fread(a, 100, 1, fp); 1.2 把防错作为工作习惯(5) 修改别人程序的修养? 当你维护别人的程序时,请不要非常主观臆断的把已有的程序删除或是修改。 修改别人的程序时,请不要删除别人的程序,如果
原创力文档


文档评论(0)