转自 http://blog.jobbole.com/83595/

在我们关于高效代码审查的博文中,我们建议使用一个检查清单。在代码审查中,检查清单是一个非常好的工具——它们保证了审查可以在你的团队中始终如一的进行。它们也是一种保证常见问题能够被发现并被解决的便利方式。

软件工程学院的研究表明,程序员们会犯15-20种常见的错误。所以,通过把这些错误加入到检查清单当中,你可以确保不论什么时候,只要这些错误发生了,你就能发现它们,并且可以帮助你杜绝这些错误。

为了帮助你开始创建一个清单,这里列出了一些典型的内容:

代码审查清单

常规项

  • 代码能够工作么?它有没有实现预期的功能,逻辑是否正确等。
  • 所有的代码是否简单易懂?
  • 代码符合你所遵循的编程规范么?这通常包括大括号的位置,变量名和函数名,行的长度,缩进,格式和注释。
  • 是否存在多余的或是重复的代码?
  • 代码是否尽可能的模块化了?
  • 是否有可以被替换的全局变量?
  • 是否有被注释掉的代码?
  • 循环是否设置了长度和正确的终止条件?
  • 是否有可以被库函数替代的代码?
  • 是否有可以删除的日志或调试代码?

安全

  • 所有的数据输入是否都进行了检查(检测正确的类型,长度,格式和范围)并且进行了编码?
  • 在哪里使用了第三方工具,返回的错误是否被捕获?
  • 输出的值是否进行了检查并且编码?
  • 无效的参数值是否能够处理?

文档

  • 是否有注释,并且描述了代码的意图?
  • 所有的函数都有注释吗?
  • 对非常规行为和边界情况处理是否有描述?
  • 第三方库的使用和函数是否有文档?
  • 数据结构和计量单位是否进行了解释?
  • 是否有未完成的代码?如果是的话,是不是应该移除,或者用合适的标记进行标记比如‘TODO’?

测试

  • 代码是否可以测试?比如,不要添加太多的或是隐藏的依赖关系,不能够初始化对象,测试框架可以使用方法等。
  • 是否存在测试,它们是否可以被理解?比如,至少达到你满意的代码覆盖(code coverage)。
  • 单元测试是否真正的测试了代码是否可以完成预期的功能?
  • 是否检查了数组的“越界“错误?
  • 是否有可以被已经存在的API所替代的测试代码?

你同样需要把特定语言中有可能引起错误的问题添加到清单中。

这个清单故意没有详尽的列出所有可能会发生的错误。你不希望你的清单是这样的,太长了以至于从来没人会去用它。仅仅包含常见的问题会比较好。

优化你的清单

把使用清单作为你的起点,针对特定的使用案例,你需要对其进行优化。一个比较棒的方式就是让你的团队记录下那些在代码审查过程中临时发现的问题,有了这些数据,你就能够确定你的团队常犯的错误,然后你就可以量身定制一个审查清单。确保你删除了那些没有出现过的错误。(你也可以保留那些出现概率很小,但是非常关键的项目,比如安全相关的问题)。

得到认可并且保持更新

基本规则是,清单上的任何条目都必须明确,而且,如果可能的话,对于一些条目你可以对其进行二元判定。这样可以防止判断的不一致。和你的团队分享这份清单并且让他们认同你清单的内容是个好主意。同样的,要定期检查你的清单,以确保各条目仍然是有意义的。

有了一个好的清单,可以提高你在代码审查过程中发现的缺陷个数。这可以帮助你提高代码标准,避免质量参差不齐的代码审查。

程序员必备的代码审查(Code Review)清单相关推荐

  1. Java程序员必备安装软件清单

    postman http接口如何调试?dubbo接口我们都知道,一般都会写个单元测试,其实http接口也可以写单元测试,只是很多人还没有这个习惯,此外,postman也是一个不错的选择. notepa ...

  2. 程序员必备的思维能力:抽象思维

    若想捉大鱼,就得潜入深渊.深渊里的鱼更有力,也更纯净.硕大而抽象,且非常美丽.--大卫·林奇 抽象思维是我们工程师最重要的思维能力.因为软件技术 本质上就是一门抽象的艺术.我们的工作是存思维的&quo ...

  3. 不管计算机专业大学生还是职场老手,除了代码之外程序员必备的软技能有哪些?

    不想去成为一个伟大的程序员,只想成为一个具有良好习惯的优秀程序员. 前言 之前看了本<软技能:代码之外的生存指南>,虽然书中的内容提到的点到现在很多都有坚持在做,不过书中对程序员必备的软技 ...

  4. 谈谈对代码审查Code Review的简单认识

    谈谈对代码审查Code Review的简单认识 Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题.包括像Google.微软这些公司, ...

  5. 「编程羽录」上线,程序员必备的这些技能你能get到嘛?

    大家好,我是小羽. 好久不见,给大家带来个好消息,小羽的全新专题「编程羽录」系列正式上新,主要是介绍一些关于面试题和经验总结的文章. 会为大家提供一些技术栈之外,程序员还需要的其他方面硬核知识,做到全 ...

  6. 程序员必备的20个软件

    此文首发于我的个人博客:windows-程序员必备的20个软件 - zhang0peter的个人博客 我自己基本上每半年左右就要重装一次win10系统,所以我在这么多次的重装系统的过程中总结了如下这些 ...

  7. Java 程序员必备的 15 个框架,前 3 个地位无可动摇!

    2019独角兽企业重金招聘Python工程师标准>>> Java 程序员方向太多,且不说移动开发.大数据.区块链.人工智能这些,大部分 Java 程序员都是 Java Web/后端开 ...

  8. 程序员必备的10大健康装备!

    前言 做为程序员,为了实现理想而奋斗不懈,每天对着电脑辐射坐在工位上拼搏8小时甚至更久,这种如同机器旁边的机器般的工作对于健康的损耗何其之大?再这么下去,还真得应了:"职务不高,工资不高,血 ...

  9. 5 款程序员必备的 Chrome 插件!

    点击上方 Java后端,选择 设为星标 优质文章,及时送达 小编平时一直好奇隔壁的程序员哥哥工作效率怎么那么高,在小编的死缠烂打.死磨硬泡.撒娇卖萌.威逼利诱之下,小气的程序员哥哥终于给我透露了这5款 ...

最新文章

  1. IDEA如何导入多个maven依赖的项目
  2. 用python的五种方式_Python模块重载的五种方法
  3. boost::geometry::within用法的测试程序
  4. java程序员高薪持续的原因有哪些
  5. python小游戏之二
  6. snprintf与sprintf的区别
  7. WPS2019 电子表格/Excel文件保护密码忘记了?
  8. dstwo linux 模拟器,dstwo gba 模拟器-TempGBA下载V1.44 最新版-西西游戏下载
  9. 10 个最佳地理空间数据分析 GIS 软件
  10. Leetcode 739 每日温度
  11. GIS制作色斑图(等值面图)保姆级指导0基础小白
  12. 格式化xml文件排版String
  13. 开发中的各种时间格式转换(二)
  14. centos7 操作记录
  15. 粗虚线和细虚线_车道划分线上下两侧有粗虚线
  16. AUSU 安装Win10注意事项
  17. 判断小米 魅族 华为 系统 MIUI EMUI FLYME
  18. 循环中的自变量-break和continue
  19. 360手机助手 无法android 4.2手机软件移动sd卡,360手机助手为什么不能移至sd卡
  20. 【SQL注入】联合查询(最简单的注入方法)

热门文章

  1. 死磕 java集合之ConcurrentSkipListMap源码分析——发现个bug
  2. 影像采集-拍照 (用自己的插件 )简单逻辑
  3. spring与springMVC配置扫描的问题
  4. 三星正在为韩国智能城市 打造首个全国性网络
  5. 在matlab中将处理结果输出为shp文件
  6. 在WebView中如何让JS与Java安全地互相调用
  7. rsyncd.conf 详细配置
  8. php实现socket
  9. linux mint 13 input method of chinese
  10. 奔四的技术人,内心都有哪些波澜?