刚才专注看了下zwchen的博客,读到Code Reivew这一篇,觉得自己也了说话的冲动。

我们Team实施Code Reivew近5年,到今天,我们的结论是: Code Review是我们项目成功的最有力的武器。下面我先谈下我理解并实施的Code Review.

1.Code review的层次。

最基础的,也是所有人都会想到到的,就是编码规范,类,方法命名什么的,还有代码格式...这些是程序员的基本功底,默认选项;多年前领导要我搞个编码规范,我说大家都熟知的规范就已经很好了啊;当然公司内部也需要这方面的规范,比如项目如何命名,包如何命名等这些。

更高一层次的,也是说的比较少的,是代码的质量。前面能保证代码写的好看,大家看了都还顺眼,但并不能保证代码的可工作性,合理性,健壮性,可维护性。我们需要可以解决问题的代码;我们需要最合理(最是相对的)的代码;我们不希望破坏现有的架构搞特殊处理,如果架构本身不适应,那就可控制的重构;我们不希望有个工作很好的功能被破坏。

2.Code Review的好处

第一,最少有两个人对同一段代码深刻理解,并且认同。如果不能做到敏捷要求的“结对编程”的味道,我们就打个折执行吧。这一点从公司正常运营上,也是有好处的。

第二,开发人员可以放心的把自己的创造性发挥出来,因为他知道他有个坚强的后盾,绝不会等到QA发现不可饶恕的错误,然后经理过来骂你一顿。

第三,开发人员都会尽全力写最好的代码;软件开发人员都是要"face"的,不想当时就被别人找到缺陷,尤其是你身边的同事。再也不会只顾今天,不管明天会怎样;对软件的可维护性更加尽心。

第四,极大的提高软件质量,以及可维护性。当然这要求Review人员的责任心,以及专业精神。如果是维护性项目,经验也是相当重要的。

3.Code Review的重要性

至此,其重要性以已经不言而喻了。个人认为某种程度上其重要性以及你改超过Unit Test.

4.Code Review不好实施的原因

Code Review如此重要,但是据我接触的人跟公司来看,真正认真执行的并不多。其原因无非:

  • 项目时间紧,时间跟人员都不充足;如果是这种情况,建议招点人,项目计划制定的更合理些。

  • 重视程度不够;开发人员都觉得自己很牛,代码不需要给别人Review。其实问题往往就是由于过分的自信造成的,需要公司高层多做宣导,并形成制度,强力执行。等过一段时间,大家都会体验到其中的好处的。

  • 执行起来比较麻烦。这是大问题。如果你让开发人员觉得做Code Review是件很容易的事,并且收益大于付出,大家就愿意做了。我们Team大致经历过三个阶段。

第一阶段,按制定的流程,开发人员把修改的代码用邮件发给Review者,并说明改了什么,对系统那些功能有影响。然后负责Review的人Copy到Eclipse,对比CVS, 看代码的改动是否合理。然后再邮件通知合格,或不合格,并说明原因(口头或书面)。

第二阶段,开发人员都觉得这样太繁琐,费事费力;于是我们开发了个Eclipse插件,帮助开发人员对自动生成代码改动细节的邮件,并把改动的代码自动放到指定的公用文件夹中。如此一来开发人员生成一个Code Review的请求,就是分分钟的事情了(右键,写点什么,完成)就好了。

第三阶段,开发人员现在很Happy了,但是Review的人觉得还是有点麻烦,要Copy,要写邮件。于是我们把插件又改进了下,Review的人也可以在Eclipse上一键把代码copy进来;然后提供了一个Web Console供头头看我们Code Review的情况。

为什么要Code Review的更多相关文章

  1. 我们是怎么做Code Review的

    前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...

  2. Code Review 程序员的寄望与哀伤

    一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...

  3. Git和Code Review流程

    Code Review流程1.根据开发任务,建立git分支, 分支名称模式为feature/任务名,比如关于API相关的一项任务,建立分支feature/api.git checkout -b fea ...

  4. 如何搭建开源code review gerrit服务器

    搭建环境:Ubuntu 14.04 一.环境准备 1.Java环境 gerrit依赖,用于安装gerrit环境. 下载:jdk-7u79-linux-x64.tar.gz http://www.ora ...

  5. Code Review Tools

    Code Review中文应该译作“代码审查”或是“代码评审”,这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法.由此,我们可以审查代码的风格.逻 ...

  6. code review作业

    下面是对结对编程队友12061166 宋天舒的code review 五个优点: 1.代码的风格优秀,注释不多,但是必要的注释还是有的,比如: // 三种模式 // mode1仅统计单个单词 // m ...

  7. 15个最佳的代码评审(Code Review)工具

    代码评审可以被看作是计算机源代码的测试,它的目的是查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能.代码审查程序以各种形式,如结对编程,代码抽查等.在这个列表中,我们编制了1 ...

  8. Code Review 五问五答

    Code Review 是什么? Code Review即代码审查,程序猿相互审核对方的代码. Code Review能获得什么好处? 提高代码可维护性 你写的代码不再只有编译器看了,你得写出审核人能 ...

  9. 大家是怎么做Code Review的?

    先说说我们公司现在的做法,一个团队被人为地分为两个阵营:Senior Developers和Junior Developers,比例差不多是1:1,Senior Developers就担负着对Juni ...

  10. Code Review for SSIS package

    以下是我对SSIS包进行code review的一些建议,如果有其他更好的方案欢迎拍砖. A. 查看是否使用了最优的解决方案 1. 最优的结构视图 2. 解决方案,包,任务,组建,参数的命名使用了易读 ...

随机推荐

  1. spring中关于<context:component-scan>的使用说明

    通常情况下我们在创建spring项目的时候在xml配置文件中都会配置这个标签,配置完这个标签后,spring就会去自动扫描base-package对应的路径或者该路径的子包下面的java文件,如果扫描 ...

  2. 清除样式的css

    html, body, div, ul, li, h1, h2, h3, h4, h5, h6, p, dl, dt, dd, ol, form, input, textarea, th, td, s ...

  3. 线段树区间更新+区间求和模板(数组实现)洛谷p3372,p3373

    模板题目1:https://www.luogu.org/problemnew/show/P3372 懒惰标记讲解:https://www.cnblogs.com/wushengyang/p/11194 ...

  4. Hibernate通用Dao

    1. 接口 package com.coder163.main.dao; import org.hibernate.criterion.DetachedCriteria; import java.io ...

  5. Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

    验证码处理之后就需要对处理的验证码进行识别训练,这里用Tesseract-ocr工具进行识别,用jTessBoxeditor进行训练生成模板. 一,对图片进行处理 利用上一篇代码对图片进行降噪处理,得 ...

  6. 高斯消元和高斯约旦消元 Gauss(-Jordan) Elimination

    高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵. 在讲算法前先介绍些概念 矩阵的初等变换 矩阵的初等变换又分为矩阵的初等行变换和矩阵的初等列变换 ...

  7. 如何实现一个HTTP请求库——axios源码阅读与分析 JavaScript

    概述 在前端开发过程中,我们经常会遇到需要发送异步请求的情况.而使用一个功能齐全,接口完善的HTTP请求库,能够在很大程度上减少我们的开发成本,提高我们的开发效率. axios是一个在近些年来非常火的 ...

  8. uni-app开发微信小程序引入UI组件库(Vant-weapp)步骤

    uni-app开发微信小程序引入UI组件库(Vant-weapp)步骤 这里以vant-weapp为例 uni-app官方文档介绍引入组件的方法 1. 新建相关目录 根目录下创建 wxcomponen ...

  9. [转]js设计模式-策略模式

    在程序设计中,常常遇到类似的情况,要实现某一个功能有多种方案可以选择.比如一个压缩文件的程序,既可以选择zip算法,也可以选择gzip算法.这些算法灵活多样,而且可以随意互相替换.这种解决方案就是本文 ...

  10. java并发系列(八)-----java异步编程

    同步计算与异步计算 从多个任务的角度来看,任务是可以串行执行的,也可以是并发执行的.从单个任务的角度来看,任务的执行方式可以是同步的,也可以是异步的. Runnable.Callable.Future ...