敏捷软件开发实践-Code Review Process(转)
介绍:
在敏捷软件开发中,从代码的产生速度上来看,要比 传统Waterfall产生速度高很多。因为我们把时间安排的更加紧凑了。那么这么多的代码,如何能保证这些代码质量呢?很多人可能直接想到静态代码检测 工具。没错,那些是可以定义一个代码检查规则来确保代码的质量,但是那个仅仅是从语言角度,那么逻辑是否已经最优化了?可重用性是否已经优化到极致了?这 些是静态代码工具不能完成的,所以我们需要Code Review
实现方式:
对于已经在项目组很久的人来说:
虽然传统的code review就是把代码从仓库checkout出来,然后看下,但是对于大项目来说,那样的代码审查没有任何的效果,因为你除了看到代码还是代码,就像你在大海中看到的除了水就是天,很快就会迷失方向的。我们团队的经验,一般是采用crucible工具来进行代码审查,这个工具我以前博客已经有过介绍了:http://supercharles888.blog.51cto.com/609344/1229660
因为我们代码提交每次都有产生一个uuid,而我们提交更多是以子功能为单位,所以我们在crucible中也以提交为单位创建事件,可以很明确的知道对于具体某个功能,其实现的效果如何。
具体流程如下:
代码我们也采用了传统的peer review,因为自己看自己代码很难看出问题,但是用批判的眼光看别人的代码就很容易看出问题,所以我们结对的进行code review, 前端的人相互review,后端的人相互review.
对于刚来项目组的人:
刚来项目组的人,因为对业务逻辑不熟悉,直接让他去以提交为单位进行审查代码是没有任何意义的,他们最重要的是熟悉代码从而可以很快的上手项目,这时候,我就不主张他们用code review工具了,而是直接把代码全部签下来整体看,我 的经验是:用调试模式启动服务器,然后在关键的行打上断点(后端代码断点),然后在前端你用Firefox 打开,开启FireBug,在关键js文件相应行也打上断点(前端代码断点),然后完全用单步走的方式,一步步走过来,同时watch关键的变量的值的变 化,这样走一遍虽然很慢,但是你会对代码逻辑流程非常熟悉而且印象深刻。而且一个项目来说,虽然代码很多,但是关键流程并不多(判断依据就是这些流程是否 最后要做Regression,如果要做Regression,那么就算关键流程),如果把握了关键流程,就是等于抓住了主要矛盾。这是最好的上手项目的习惯。按照我们团队的经验,一般一个senior engineer水平,2-3天就能上手项目并且开始接任务做了。
总结:
(1)对于项目组的老人来说,用代码审查工具来code review,从而可以从功能模块角度审查代码的实现
(2)对于新来项目组的成员来说,用调试模式单步走的策略,只抓住核心流程,从而以最快的速度把握项目核心流程。
本文出自 “平行线的凝聚” 博客,http://supercharles888.blog.51cto.com/609344/1262016
敏捷软件开发实践-Code Review Process(转)的更多相关文章
- 敏捷软件开发实践-Release Process/Release Plan(转)
介绍: 因为我们的开发周期是迭代进行的,以Sprint为单位,我们每个 Sprint如何去和客户说我们的成果呢,那么我就需要Demo和release一些新功能,或者一些bug fixing.Demo我 ...
- 敏捷软件开发实践-Sprint Retrospective Meeting(转)
介绍: 在敏捷开发模式中,Sprint Retrospective Meeting 也是一个必不可少的环节,它通常发生在每个Sprint的结尾,其主要作用是对于当前的迭代周期做一个阶段性的总结,包括好 ...
- 敏捷软件开发:原则、模式与实践——第12章 ISP:接口隔离原则
第12章 ISP:接口隔离原则 不应该强迫客户程序依赖并未使用的方法. 这个原则用来处理“胖”接口所存在的缺点.如果类的接口不是内敛的,就表示该类具有“胖”接口.换句话说,类的“胖”接口可以分解成多组 ...
- 敏捷软件开发:原则、模式与实践——第10章 LSP:Liskov替换原则
第10章 LSP:Liskov替换原则 Liskov替换原则:子类型(subtype)必须能够替换掉它们的基类型(base type). 10.1 违反LSP的情形 10.1.1 简单例子 对L ...
- 《敏捷软件开发-原则、方法与实践》-Robert C. Martin读书笔记(转)
Review of Agile Software Development: Principles, Patterns, and Practices 本书主要包含4部分内容,这些内容对于今天的软件工程师 ...
- 敏捷软件开发:原则、模式与实践——第14章 使用UML
第14章 使用UML 在探索UML的细节之前,我们应该先讲讲何时以及为何使用它.UML的误用和滥用已经对软件项目造成了太多的危害. 14.1 为什么建模 建模就是为了弄清楚某些东西是否可行.当模型比要 ...
- 敏捷软件开发:原则、模式与实践——第8章 SRP:单一职责原则
第8章 SRP:单一职责原则 一个类应该只有一个发生变化的原因. 8.1 定义职责 在SRP中我们把职责定义为变化的原因.如果你想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责.同时,我 ...
- 【Scrum】-NO.40.EBook.1.Scrum.1.001-【敏捷软件开发:原则、模式与实践】- Scrum
1.0.0 Summary Tittle:[Scrum]-NO.40.EBook.1.Scrum.1.001-[敏捷软件开发:原则.模式与实践]- Scrum Style:DesignPattern ...
- 敏捷软件开发:原则、模式与实践——第13章 写给C#程序员的UML概述
第13章 写给C#程序员的UML概述 UML包含3类主要的图示.静态图(static diagram)描述了类.对象.数据结构以及它们之间的关系,藉此表现出了软件元素间那些不变的逻辑结构.动态图(dy ...
随机推荐
- JUC同步器框架AbstractQueuedSynchronizer源码图文分析
JUC同步器框架AbstractQueuedSynchronizer源码图文分析 前提 Doug Lea大神在编写JUC(java.util.concurrent)包的时候引入了java.util.c ...
- QtGui.QSlider
A QtGui.QSlider is a widget that has a simple handle. This handle can be pulled back and forth. This ...
- TP框架中session操作
TP中session操作 查看代码,OMG! 不应该是这样的
- UML回想-通信图
我们对软件project这一大块的学习事实上開始的还是挺早的,而且在后来的学习过程中也不断的涉及到了这些知识. 可是,经过软考的检验来看我对软工这一块的内容掌握的实在是慘不忍睹.基本上就是一出 ...
- 【BIRT】报表显示不全
使用BIRT开发了一张报表,预期效果如下 但是开发完成后预览效果如下: 最后的合计竟然没有了,那么怎么处理呢 鼠标点击Layout窗口空白部分,找到布局,切换为自动布局,如下图所示:
- 项目启动时 Exception in thread "HouseKeeper" java.lang.NullPointerException
首先查看是否是端口冲突引起,在日志信息该错误位置往上找,如果再无错误信息,而只有该错误,则原因可能如下: 原因: This is because Proxool is not being shutdo ...
- OSSSME - 开源软件助力中小企业发展
怀揣着为中小企业量身定做一整套开源软件解决方案的梦想开始了一个网站的搭建.http://osssme.org/ [2013-8-2] 由于同时更新2个站点的信息比较繁琐,今后所有和iDempiere. ...
- c#:treeview双击某个节点的事件
NodeMouseDoubleClick事件 事例: private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseC ...
- 导入项目出现: Unable to resolve target ‘android-10′ 解决办法
进入到android项目根目录下,打开项目文件project.properties ,修改 target=android-10 的值.把10改为当前虚拟机API level的版本即可.我这里改为17 ...
- 使用PsExec tool在Session 0下运行程序
在Service程序中使用OutputDebugString输出log信息, 在当前用户直接运行DbgView.exe, log信息是不会输出到DbgView窗口的.原因是Server程序运行在Ses ...