代码检查项.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
代码检查项.doc

代码检查项 检查项说明代码中要考虑每个函数调用是否会失败?失败会有什么影响?需要如何处理等在函数返回前或对象析构时做好资源回收尤其在调用失败时需要注意(特别注意不要忘记解锁)注意资源的释放顺序是否正确例如:线程A中用到资源B,则需要先释放A再释放B少动态分配内存,同时也应该控制栈的大小动态分配内存速度慢并且容易产生内存泄漏要注意内存分配失败后的处理,必要时应尽快退出非局部变量的指针在释放后需要赋空,在使用时一定要判断是否为空避免释放后再次使用,除非重新分配内存在构造函数中对指针变量初始化为NULL如果是car构件,则会在创建时将内存都清为0检查内存是否会越界尤其是在使用wcscpy这类函数时 多线程的程序中,确认资源分配是否合理,是否会发生死锁全局变量是否需要锁注意变量的生命周期如异步函数和线程中的参数等普通应用禁止使用线程的Abort构件的回调必须在对象删除前被remove掉不写多余的代码多余的函数调用; 若Out参数可以为NULL,且调用者不关心这个参数就可以传NULL; 给变量赋值后又不使用; 多余的初始化和赋值操作;所执行到的代码应该都是有用的代码,对参数的有效性判断应在入口处执行wcscpy(wsb, L”xxx”); if (xx) { Fun();//只有这里使用wsb, wcscpy应放在if判断之之后 }重要函数需要考虑性能主要考虑执行频率是否为关键路径减少浮点数运算,尤其是除法有些可以使用整型代替对长字符串多次执行wcscat时,应主动将指针偏移到合适位置减少指针偏移的次数,建议使用WStringBuf::Concatenate字符串固定时,应使用常量字符串可以减少字符串的复制和栈的使用 如:stmt-Execute(Lselect * from your_table;);对于复杂的可能出错的宏应考虑用inline函数代替宏出错时调试困难,可读性也差 要注意,复杂的inline函数不一定会真正inline,如果不能确认,而且代码???率很重要,还是继续用宏检查复杂的循环处理中是否可能出现死循环确认条件判断里的边界情况考虑的是否合理尤其注意==的情况对于特别长的函数实现,应该进行拆分提高可读性和可维护性以及复用性代码检查项 检查项说明对于错误的情况不能只是用assert()进行诊断,应添加相应的错误处理Assert使用的原则… 可能很多人不知道 Assert一般用于断言一定发生的事,如果中了,说明代码错了。assert(0)用于断言不可能发生的事,也用于提示一些目前尚未实现准备将来处理的代码。不要直接使用printf之类的打印函数其他用于调试的代码也应该由开关控制多处用到的代码,应该考虑作为函数提出来提高可维护性, 提高代码重用性多处使用的数字或字符串,应该考虑使用宏或const变量提高可维护性将各个分支中共用的代码提取出来ec = pPointer-Foo(); if (FAILED(ec)) { pPointer-Release(); return ec; } pPointer-Release(); 应改为: ec = pPointer-Foo(); pPointer-Release(); if (FAILED(ec)) { return ec; }检查代码逻辑的正确性char *p = NULL; if (xx) { p = new char[nLen]; } …… delete p; delete应该是new成功后才执行对于只执行一次的代码要单独提出,避免多次执行如: for (int i = 0; I fun(); i++) {..} 若fun()返回的值是不变的,则应该将fun()提出来,避免每次都执行; 函数中多个地方有相同的变量操作,也应该提出来(如 a / 6,a % 8等); 有些变量是不变的,则只要在初始化时执行就行了对于复杂的代码逻辑,待完善的地方,必须要有完整的注释有问题的地方用// TODO: // BUGBUG:注释暂时使用的代码必须写注释如:由于其他地方有bug而暂时采用绕的方法;现有代码处理不够,以后需要优化删除不再使用的代码和无用的注释通过版本管理可以看到之前的版本

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档