介绍:

在敏捷软件开发中,从代码的产生速度上来看,要比 传统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

最新文章

  1. matlab 使用札记
  2. 伟大的GCD和NSOperationQueue
  3. JSON格式互转集合
  4. PTPX中的clock tree与LP design
  5. Canvas俄罗斯方块
  6. Android Studio 小技巧合集
  7. Spring整合CXF,发布RSETful 风格WebService(转)
  8. HDU 2795 Billboard (线段树)
  9. HTML5实现在线抓拍
  10. org.openqa.selenium.remote.SessionNotFoundException: The FirefoxDriver cannot be used after quit() was called.
  11. 关于Class.forName(“com.mysql.jdbc.Driver”)--转
  12. go 冒泡排序
  13. WebAPI通过multipart/form-data方式同时上传文件以及数据(含HttpClient上传Demo)
  14. ASP.NET MVC 文件上传和路径处理
  15. Sping--Id, Name
  16. hibernate使用注解配置索引
  17. Win7 64位操作系统中搭建C/C++的编译环境
  18. 第22章 使用外部身份提供商登录 - Identity Server 4 中文文档(v1.0.0)
  19. .gitlab-ci.yml简介
  20. 转 linux常用查看硬件设备信息命令

热门文章

  1. Linux 监测常用的图形工具
  2. Hbase总结(八)Hbase中的Coprocessor
  3. HDU 5361 In Touch (2015 多校6 1009 最短路 + 区间更新)
  4. 基于SSM + Redis的Shiro权限管理项目
  5. 超级干货,python常用函数大总结
  6. cocopods卸载、安装、重装等问题解决(转)
  7. Android—— 定制界面风格
  8. mosquitto ---SSL/TLS 单向认证+双向认证
  9. python 2/3 joblib.dump() 和 joblib.load()
  10. IOS基于XMPP协议开发--XMPPFramewok框架(一):基础知识