代码复查
http://blog.fogcreek.com/increase-defect-detection-with-our-code-review-checklist-example/
这篇博客中介绍了“Code Review Checklist”方法,从而让软件开发人员能够高效得将代码复审进行下去。
下面是对典型审查指标的枚举:
Code Review Checklist
General (一般指标)
- 代码是否能够正常工作?是否能够达到预期的功能,逻辑是否正确等等。
- 所有的代码都简单易懂吗?
- 是否符合你们的代码规范?通常包括括号的位置,变量和函数的命名,每一行的长度,格式以及注释。
- 是否存在一些冗余或者重复的代码?
- 是否做到了尽可能的模块化?
- 全局变量是否能够被替代?
- 有没有一些被注释的代码?
- 循环的长度是否规整?循环是否有正确的终止条件?
- 有哪些代码是可以被库函数代替的吗?
- 可以删除任何日志记录或调试代码吗?
Security (安全)
- 所有的输入数据都被检查(检查格式是否正确,长度,类型以及范围等)并且编码过了吗?
- 哪些地方使用了第三方程序,返回的错误信息是否全部被捕获了?
- 输出值是否通过检验并正确编码了?
- 无效的参数值处理了吗 ?
Documentation (文档)
- 是否有文档来解释代码?
- 所有的函数是否有加上规格?
- 是否对不寻常的行为或边界情况处理进行描述?
- 是否有记录对第三方函数的使用情况?
- 对数据结构和度量单位解释了吗?
- 有不完整的代码吗?如果是这样,应该是删除或标记等一个合适的标记“待办事项”?
Testing (测试)
- 代码是可测试的吗?即是否添加太多隐藏的依赖、是否能够初始化对象、测试框架可以使用方法等
- 测试是否存在?以及它是否做到了完全覆盖?
- 单元测试是否测试到了代码能否达到预期的功能?
- 数组是否检查了越界情况?
- 哪些测试代码是可以用已经存在的API来代替的?
代码复查的CheckList需要开发团队根据项目的具体需求来设定,同时还需要经常去调整更进,这样才能保证代码复查的一致性,从而提高代码质量。同时注意代码复查在心理层面也是能够很好地提高程序员的代码质量的,对团队开发很是重要。
对自己的个人项目进行代码审查的结果:
Code Review CheckList | |
General | |
代码是否能够正常工作? | 能够达到预期功能,逻辑正确 |
所有的代码都简单易懂吗? | 能够读懂 |
是否符合你们的代码规范? |
由于事先没有定代码规范,所以这方面依照自己的习惯来的。 但是这次代码事先的架构不是特别好,写完之后让我感觉很不舒服。 |
是否存在一些冗余或者重复的代码? | 存在一些重复 |
是否做到了尽可能的模块化? | 针对功能方面没能很好的进行模块化,这是个重要的改进方向 |
有没有一些被注释的代码? | 有 |
循环的长度是否规整?循环是否有正确的终止条件? | 较规整,有终止条件 |
Security | |
所有的输入数据都被检查? | 是 |
第三方程序的使用? | 未使用第三方代码 |
输出值是否经过了检验? | 进行了检验 |
是否有对无效参数进行检验? | 有 |
Documentation | |
(由于没有事先进行约定,文档方面没有写) | |
Testing | |
可测试性? | 比较好测试 |
是否已经做了测试? | 对整体的运行效果做了测试 |
单元测试的效果? | 没有做单元测试 |
数组是否有越界? | 没有使用数组,没有考虑越界情况 |
综上所述:复查的结果不是特别好,原因是因为实现没有做好代码规范,同时也是因为这次复查是突然要求的,如果事先知道了要复查,程序员的代码质量必然有所提高,这也正好验证了代码规范和代码复查在软件开发过程中的重要性。同时在后面的结对项目开发过程中,我们会更加严肃认真的对待这个方面,期待我们在结对项目过程中能有愉快的开发经历~