代码审查表分析和总结.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京康吉森交通技术有限公司—项目名称 北京康吉森交通技术有限公司—项目名称 代码审查表 版权所有 第 版权所有 第 PAGE 1 页 共 6 页 附录 C :C++/C 代码审查表 文件结构 重要 审查项 结论性 头文件和定义文件的名称是否合理? 头文件和定义文件的目录结构是否合理? 版权和版本声明是否完整? 重要 头文件是否使用了 ifndef/define/endif 预处理块? 头文件中是否只存放“声明”而不存放“定义” …… 程序的版式 重要 审查项 结论 性 空行是否得体? 代码行内的空格是否得体? 长行拆分是否得体? “{” 和 “}” 是否各占一行并且对齐于同 一列? 重要 一行代码是否只做一件事?如只定义一 个变量,只写一条语句。 重要 If、for、while 、do 等语句自占一行,不 论执行语句多少都要加“ {}”。 重要 在定义变量(或参数)时,是否将修饰符 * 和 & 紧靠变量名? 注释是否清晰并且必要? 重要 注释是否有错误或者可能导致误解? 重要 类结构的 public, protected, private 顺序是 否在所有的程序中保持一致? …… 命名规则 重要 审查项 结论性 重要 命名规则是否与所采用的操作系统或开发工具的风格保持一致? 标识符是否直观且可以拼读? 标识符的长度应当符合“ min-length max-information ”原则? 重要 程序中是否出现相同的局部变量和全部变量? 类名、函数名、变量和参数、常量的书写格式是否遵循一定的规则? 静态变量、全局变量、类的成员变量是否加前缀? …… 表达式与基本语句重要 性  审查项 结论 重要 如果代码行中的运算符比较多, 是否已经用括号清楚地确定表达式的操作顺序? 是否编写太复杂或者多用途的复合表达 式? 重要 是否将复合表达式与“真正的数学表达式”混淆? 重要 是否用隐含错误的方式写 if 语句? 例如 (1)将布尔变量直接与 TRUE 、FALSE 或者 1、0 进行比较。 (2)将浮点变量用“ ==”或“!=”与任何数字比较。 ( 3)将指针变量用“ ==”或“! =”与NULL 比较。 如果循环体内存在逻辑判断, 并且循环次数很大,是否已经将逻辑判断移到循环体的外面? 重要 Case 语句的结尾是否忘了加 break ? 重要 是否忘记写 switch 的 default 分支? 重要 使用 goto 语句时是否留下隐患 ? 例如跳过了某些对象的构造、变量的初始化、重要的计算等。 ?? 常量 重要 审查项 结论性 是否使用含义直观的常量来表示那些将 在程序中多次出现的数字或字符串? 在 C++ 程序中,是否用 const 常量取代宏常量? 重要 如果某一常量与其它常量密切相关, 是否在定义中包含了这种关系? 是否误解了类中的 const 数据成员?因为 const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变 的。 ?? 函数设计 重要 审查项 结论性 参数的书写是否完整?不要贪图省事只写参数的类型而省略参数名字。 参数命名、顺序是否合理? 参数的个数是否太多? 是否使用类型和数目不确定的参数? 是否省略了函数返回值的类型? 函数名字与返回值类型在语义上是否冲突? 重要 是否将正常值和错误标志混在一起返回?正常值应当用输出参数获得, 而错误标志用 return 语句返回。 重要 在函数体的“入口处”,是否用 assert 对参数的有效性进行检查? 重要 使用滥用了 assert ? 例如混淆非法情况与错误情况,后者是必然存在的并且是一定要作出处理的。 重要 return 语句是否返回指向“栈内存”的“指针”或者“引用”? 是否使用 const 提高函数的健壮性? const 可以强制保护函数的参数、 返回值,甚至函数的定义体。“Use const whenever you need ” …… 内存管理重要 性  审查项 结论 重要 用 malloc 或 new 申请内存之后,是否立即检查指针值是否为 NULL?(防止使用指针值为 NULL 的内存) 重要 是否忘记为数组和动态内存赋初值? (防止将未被初始化的内存作为右值使用) 重要 数组或指针的下标是否越界? 重要 动态内存的申请与释放是否配对? (防止内存泄漏) 重要 是否有效地处理了“内存耗尽”问题? 重要 是否修改“指向常量的指针”的内容? 重要 是否出现野指针?例如 指针变量没有被初始化。 用 free 或 delete 释放了内存之后, 忘记将指针设置为 NULL。 重要 是否将 malloc/free 和 new/delete 混淆使用? 重要 malloc 语句是否正确无误?例如字节数是否正确?类型转换是

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

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

认证主体 阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档