代码复查

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
可测试性?  比较好测试
是否已经做了测试? 对整体的运行效果做了测试
单元测试的效果? 没有做单元测试
数组是否有越界? 没有使用数组,没有考虑越界情况 

综上所述:复查的结果不是特别好,原因是因为实现没有做好代码规范,同时也是因为这次复查是突然要求的,如果事先知道了要复查,程序员的代码质量必然有所提高,这也正好验证了代码规范和代码复查在软件开发过程中的重要性。同时在后面的结对项目开发过程中,我们会更加严肃认真的对待这个方面,期待我们在结对项目过程中能有愉快的开发经历~

Week2 代码复查的更多相关文章

  1. 个人博客作业week2——代码复审

    1.代码规范 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 代码规范并不是从官僚制度下产生,它是为了提高项目团队开发效率而产生的一种工具,能够极大的增强代码可读 ...

  2. 个人博客作业-Week2 (代码规范, 代码复审)

    代码规范: 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 编码规范它包含了代码格式,还包括了编码风格和其他规范,通常涉及:缩进.空格使用.Tab使用 注释. ...

  3. 个人作业 - Week2 - 代码复审

    代码复审Check List 概要部分 代码能符合需求和规格说明么? 能完成1~1000000个数独的求解与生成,并能处理异常输入,满足需求. 代码设计是否有周全的考虑? 为输入单独开设了一个输入检测 ...

  4. 代码规范与复审2——个人博客作业week

    一.关于编程规范的重要性论证 1.不支持. 1)编程规范有利于自己提高编程效率和编程质量.编码是程序员的职责,一个好的信息技术产品必然有高质量的代码,高质量的代码首先 一点它必须遵守某种编程规范.如果 ...

  5. 个人博客week2

    1. 是否需要有代码规范 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 我是个艺术家,手艺人,我有自己的规 ...

  6. 用 Eclipse 插件提高代码质量

    如果能在构建代码前发现代码中潜在的问题会怎么样呢?很有趣的是,Eclipse 插件中就有这样的工具,比如 JDepend 和 CheckStyle,它们能帮您在软件问题暴露前发现这些问题.在 让开发自 ...

  7. 关于Java开发过程中质量提升-1代码格式配置

    在项目开发维护中,编码规范作为开发规范的一个组成部分,是十分重要和必须的,它不仅仅是为了提高开发效率,也有利于降低后期维护开发的成本.编码规范的根本目的就是要让不仅代码可以一目了然,也可以很容易的理解 ...

  8. Git提交代码规范 而且规范的Git提交历史,还可以直接生成项目发版的CHANGELOG(semantic-release)

    Git提交代码规范 - 木之子梦之蝶 - 博客园 https://www.cnblogs.com/liumengdie/p/7885210.html Commit message 的格式 Git 每次 ...

  9. psp工具需求分析

    PSP个人软件过程开发工具需求分析文档 a.业务需求    a.1 背景 二十一世纪是软件开发的黄金时期,有人把过去的十年称作软件高度发展的十年,不可置疑,越来越多的软件设计需求是物联网时代的趋势,越 ...

随机推荐

  1. python 计时累积超过24小时时继续往上累加

    最近在做一个工具,要求在工具上面加上程序运行的时间,所以做了个计时器 在网上找了很多发现都是24小时制的,超过24小时后就会回0 然后自己根据24小时制修改了一个不停累加时间的 若是想超过24小时后以 ...

  2. Alpha版本 - 测试报告

    Alpha版本 - 测试报告 总体测试计划 前端 模块 子模块 测试项 预期结果 测试工具 执行人 登录/注册模块 无网络 提示无网异常 robolectric 陈龙江 登录 输入用户名/密码为空,点 ...

  3. MySQL的并发控制与加锁分析

    本文主要是针对MySQL/InnoDB的并发控制和加锁技术做一个比较深入的剖析,并且对其中涉及到的重要的概念,如多版本并发控制(MVCC),脏读(dirty read),幻读(phantom read ...

  4. java中的深复制和浅复制

    Java 语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念.并且由于Java不能通过简单 的赋值来解决对象复制的问题,在开发过程中,也 ...

  5. luogu P2860 [USACO06JAN]冗余路径Redundant Paths

    题目描述 In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1- ...

  6. PAT A1098 Insertion or Heap Sort (25 分)——堆排序和插入排序,未完待续。。

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

  7. java Scanner类的使用

    参考链接:https://blog.csdn.net/android_depon/article/details/69669160     https://www.cnblogs.com/zhengc ...

  8. linux ntp 时间同步

    一.时间同步服务器可以将数据库服务器作为同步服务器ntp.conf 保持不变 //启动服务service ntpd start //设置ntpd服务自启动chkconfig ntpd on//检查ch ...

  9. lazy-load-img.js 源码 学习笔记及原理说明

    lazy-load-img.js? 1. 什么鬼? 一个轻量级的图片懒加载,我个人很是喜欢. 2. 有什么优势? 1.原生js开发,不依赖任何框架或库 2.支持将各种宽高不一致的图片,自动剪切成默认图 ...

  10. 每个大主播都是满屏弹幕,怎么做到的?Python实战无限刷弹幕!

    anmu 是一个开源的直播平台弹幕接口,使用他没什么基础的你也可以轻松的操作各平台弹幕.使用不到三十行代码,你就可以使用Python基于弹幕进一步开发.支持斗鱼.熊猫.战旗.全民.Bilibili多平 ...