一、CODE REVIEW工作组织建立

代码REVIEW的工作,多数人认为是程序员的事情,其实恰恰理解的不充分,代码作为软件最基本要素之一,仅仅是之一,软件其实还有很多方面,设计,推广,销售,服务等等都是软件的要素,这些都不是一两个人全包就可以解决的,所以要有不同的人,形成组织。REVIEW代码同样的道理,代码实现的上一级,一定是设计,设计师要不要参与,有没有按设计师的设计进行实现,实现过程中有哪些问题设计没有讲清楚的,设计师要参与,代码编写完了有测试工作,模块测试,层级测试,功能测试等需要测试人员参与,特别是白盒测试,更是需要对代码有一定的了解。质量管理人员对质量的把控同样是需要了解代码中有多少问题,质量过关没有项目经理更是要了解,代码的BUG和修改对项目进度的影响,上面描述的角色都是利益相关人,所以组织一定是要有的,只是主角变为了写代码的程序员。

二、CODE REVIEW流程化方法

1、REVIEW策划

【确定REVIEW CODE的范围】

一个软件项目,代码量还是有些的,特别是大的软件工程,百万行代码是很常见的,所以,一次代码REVIEW的规模不能太大,可以进行多次的REVIEW活动,每次只针对特定模块,一次性REVIEW清楚,防止多个模块或层次交叉在一起,REVIEW不清楚,导致REVIEW效果低下。

【确定REVIEW的人员】

此模块代码实现程序员,关注的重点是代码是否正常,功能是否实现,逻辑算法是否对,REVIEW的人员能发现点代码的问题,以及解决的思路。

使用接口的人员,测试人员,高 层模块使用低层模块,此类人员关注的是模块接口是否好用和使用的限制,测试是否方便。用户技术支持人员,此类关注的是模块接口是否有扩展性和易用性

此模块算法和设计人员,此类人员关注的是算法实现有没有设计问题,代码实现好不好,算法的效果如何,设计人员关注的是流程是否正常,调用关系是否正确。

关联模块的设计 编码人员,提供基础模块的人员,此类人员关注的是你调用我的接口有没有调用错误,调用的先后次序等

。。。

从上面可以看出,程序员要想把CODE REVIEW做好,还真不是件容易的事情。

【确定REVIEW的要求】

很多程序员都把REVIEW代码认为是找BUG,格局太小,REVIEW代码找到BUG只是其中的一部分,REVIEW代码过程中可以检查的东西很多,代码实现功能的完整性,异常处理有没有,接口定义有没有按公司的编程规范,接口在日后的扩展性上有没有考虑到,代码逻辑是否合理,算法是否选择正确,算法是否太复杂等待都是可以进行REVIEW的,这都是CODE REVIEW。

要求一定要提清楚,REVIEW CODE重点是什么,不同的模块 REVIEW的重点业务不同的,比如: API接口代码的REVIEW, REVIEW的重点在接口的易用性和可扩展性上,实现关注是否多任务调用,同/异步调用;模块代码的REVIEW重点在于模块功能实现是否稳定可靠;算法代码的REVIEW重点在于算法是否正确和效率。

2、REVIEW的实际实施

【确定REVIEW的活动时间段】

一般建议代码快写完的前几天启动REVIEW工作

【落实REVIEW活动】

REVIEW的形式选择

1、  代码离线REVIEW,相关的人员通过配置库获得权限,获取版本代码,代码检查,提出问题记录,代码实现人员回答。当然也可以通过即时通信工具,线上直接问题,也可以将记录发给代码实现人员。有些公司有REVIEW的工具可以使用,如网上问题单形式的,有EXECL表格,还有直接使用SOUCEINSIGHT插件的等等,视情况而定。

2、代码串讲会议形式(网上会议也是此类)

此类形式最值得推荐,但要控制好人员规模和时间,会议效果才会得以体现。预约会议室(有时会议室挺难抢的)后,发会议通知给相关人,附带CODE REVIEW的要求和资料,提前让大家有个准备。会议前可以收集一些反馈。会议正式开始使用大屏幕进行相关代码的REVIEW。

会议过程建议,程序员先讲一个REVIEW的要求,第二步讲代码实现的功能规格,第三步讲实现的大致流程,以及和周边模块层次的关系,第四步开始自己代码的讲解。讲解的过程中,可以随时打断进行交流,同时程序员需要将一些关键点记录下来。

程序员执行的工作:会议前准备CODEREVIEW的资料和代码和讲解思路,会议预定通知,会议中讲解,问题和关键点记录

REVIEW的人员需要执行的工作:会前了解REVIEW的内容,这点很重要,代码现场看效果比较差,除非你能力够强,虽然有时不一定能看懂,但基本的API,业务流程,语法和编程规范都是可以看的,基本的调用关系都是可以事先看的,甚至和自己相关的接口。会议中集中精力,按业务流程对应程序员代码串讲过程,在串讲的过程中,不同人看事情角度不同,很容易发现问题,及时发言,讨论交流,记录关键点和问题。

3、结对面对面形式

这种比较适合组员,人数一两个,可以随时在电脑前进行,这种在软件代码还没有成型的情况下,或代码都一定编写难度,中间写不下去了,通过这种方式REVIEW代码,也可以很好地解决代码问题。

【收集REVIEW的反馈】

REVIEW的过程到这里,主要的过程已经结束了,不管反馈是邮件,还是会议记录,随笔,需要一个整理的过程,内容按对内和对外两部分,对内是自己需要进行的工作,对外主要的求助和要求。

【确定修改方案】

对于REVIEW出的问题,代码的BUG和功能缺陷是需要程序员自身出方法来进行解决。对于涉及架构和相关模块的设计就需要单独形成软件任务,要求相关的人员提供解决方案,并且一定要知会到相关人。

三、REVIEW评估

这一部分,多数项目是没有的,一个是流程本身很多项目就没有,另外一个没有将REVIEW结果转化为对项目的贡献,主要是不是显性的,其实最应该有的就是对当前项目的影响最重要,要有对项目中上游环节和下游环节的人员和部门的影响说清楚,代码中的问题是否影响架构和设计,设计本身也有可能有问题,只是设计期间没有暴露出来,到代码实现阶段问题出来了,设计人员部门需要进行补充修改设计。

程序员之间的代码影响,这个比较直接,调用的接口,算法调整相互知会,当然REVIEW过程中可以当面确认。比较有经验的程序员,会将问题和REVIEW的修改结论写到一个TXT文档中,放到软件项目工程中,这个是历史记录,对日后维护代码非常有用。测试人员知道代码中的问题,会相应增加测试用例,覆盖测试和回归测试,相应的工作任务也就很明确了。质量控制人员可以通过历次的REVIEW活动的记录,量化出软件项目的质量水平,相应提成质量控制方法,如设计力量不足导致代码实现问题多,需求不清楚等等。

最后是项目经理,有没有影响到项目进度,人员是否调整,协调资源等工作。

如何进行代码REVIEW

代码REVIEW的一般方法

代码REVIEW的流程化工作相关推荐

  1. 代码review的流程

    以前我们一直都是如果要进行代码review的时候,要不我们就直接用idea来进行查看,根据不同的来查看 但是我们都是看代码的不同来进行来实现的,其实我们不需要这样,我们可以使用工具Phabricato ...

  2. 研发团队如何借助Gitlab来做代码review

    代码review是代码质量保障的手段之一,同时开发成员之间代码review也是一种技术交流的方式,虽然会占用一些时间,但对团队而言,总体是个利大于弊的事情.如何借助现有工具在团队内部形成代码revie ...

  3. 怎么做好团队代码review

    代码review是代码质量保障的手段之一,同时开发成员之间代码review也是一种技术交流的方式,虽然会占用一些时间,但对团队而言,总体是个利大于弊的事情.如何借助现有工具在团队内部形成代码revie ...

  4. 企业工作流程化重要吗?

    企业工作流程化其实是非常非常重要的. 我们先搞清楚什么是企业工作流程化? 企业流程化,说简单点就是一种组织能力,就是把优秀个体的成功经验.成功的工作方法变成组织的一种能力. 华为任正非曾经说过一句话: ...

  5. git 代码推送流程_Git 101:一个让您开始推送代码的Git工作流程

    git 代码推送流程 I'm going to explain Git the way I wish someone had explained to me back when I was first ...

  6. 4-2 能力提升与优势打造-工作流程梳理-从执行跃迁到流程的方法流程化、工具化、清单化

    本次目标: (1)获得从基础琐碎的工作中锻炼能力.干出成绩的方法 (2)学习流程化.工具化.清单化这三个方法 (3)沉淀工作经验,迅速摆脱基层岗位的经验束缚 (4)具备管理岗位具备的能力,加速职业发展 ...

  7. 一图讲清:如何将招聘管理流程化,让HR从重复工作中解放出来

    小A是上海某家科技初创公司负责招聘管理的HR,帮公司每个岗位挖掘到合适的人才是她每天的工作内容.但随着公司从5个人.20个人,到现在的100多人,招聘任务越来越多,招聘流程也变得复杂起来,仅凭她人工整 ...

  8. XGB建模流程化代码—仅作学习笔记

    XGB建模流程化代码-仅作个人学习笔记 以下绝大部分出自网络,因为不知道具体作者是谁...代码部分针对自己学习使用修改了一下 建模的要点80%在数据,我是真的理解到了,心痛.头疼☠ 本篇主要是把xgb ...

  9. 复杂任务处理三部曲:系统性思维、结构化思维、流程化管理

    欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析.实际应用.架构思维.职场分享.产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习 1 文章概述 在处理 ...

最新文章

  1. Windows又发现安全漏洞 能够控制网络用户
  2. Oracle分页查询2
  3. PHP内核探索之变量(4)- 数组操作
  4. NYOJ--21--bfs--三个水杯
  5. SAP 作业类型主数据
  6. logback 的过滤器和异步日志和自定义 logger
  7. Python全栈工程师(异常(基础))
  8. 消息通知系统模型设计
  9. 安装zabbix服务器端
  10. 【中级04】Java 虚拟机 Runtime Data Areas以及垃圾回收
  11. linux ulimit知识
  12. 2.ActiveMQ下载和安装(Linux版)
  13. 人工智能、机器学习、深度学习和神经网络的关系
  14. 一:计算机基础入门及介绍
  15. 公众号搜题接口API
  16. 机器学习之集成学习(七)随机森林scikit-learn库
  17. 缓慢的HTTP拒绝服务攻击漏洞
  18. Eclipse设置项目编码格式的两种方式
  19. MiniGUI中的几个画线函数
  20. 嵌入式学习硬件篇------初识ARM

热门文章

  1. RF连接Mysql数据库
  2. mysql 怎么设置ip地址_Mysql设置用户指定ip地址操作数据库的方法
  3. 【整理】Libav、FFmpeg、mplayer、VLC开源项目、FFDshow
  4. FTP文件夹打开错误,Windows无法访问此文件夹
  5. VUE如何导入开源项目及报错处理gyp ERR! stack Error: Command failed: D:\Python\python.EXE -c import sys; print “%s.
  6. linux ppoe,linux下连接windows2003 ppoe 服务器
  7. PowerBI基础知识——深化和钻取
  8. 让你的文章变得‘好看’--分享一些不错的字体颜色
  9. 音频编解码技术零基础学习方法
  10. 用python写一个16进制转换文本字符串