关于code reiview
先谈谈三个code review的关键因素:
一、创建review要简单
code reivew是一个程序员日常工作中经常做的一件事,理论上来讲,任何一个将要submit到SCM的change,都必须经过peer review。如果创建一个review要傻了吧唧的打包代码,发送邮件,或者shelve一个changelist,再发信告知changelist number,或者进入某个比较先进的code review系统(比如crucible)手工创建一个review,这些步骤都太过繁琐,任何一个懒惰的程序员都不会有耐心来做这种事,更别说日复一日的做这种愚蠢的事了。
我们需要的是一键式创建review - 一个按钮,搞定! 比如我以前公司用一个p4插件,直接右键一个pending changelist,就可以创建一个code review(code collaborator);我现在公司则更加全面,更加彻底,提供了一个命令,可以cover不同的scm,不同的code review系统(支持crucible,gerrit),相当方便、快捷。
二、做review要方便
review的过程,是一个就代码相互交流的过程,为了使这个交流更加高效,我们需要明确知道在讨论的是哪一行代码 - 显然,用邮件是一件相当愚蠢的事情,就像有些人吹嘘用notepad写代码一样。现在市面上这样的系统非常多了:我用过的就有code collaborator, crucible。可以直接就某一行代码开展讨论,并及时邮件通知。
三、被review的change要靠谱
你必须在发出review之前,先review自己的代码 - 编译过了吗,回归测试过了吗? 新feature功能实现了吗?bug真的fix掉了吗? 自己啥都不做,写完代码就发review,然后期望别人能够帮你发现问题(把别人当你的编译器,测试工具?)是非常不负责任的做法,尤其是对自己的不负责,久而久之,你在team中名气大臭,终将失去所有人的信任。
再谈谈四个code review的重要作用:
一、威慑
这是我感触最深的一点:知道自己的change会被review,那么在做这个change的过程当中,你就会比较负责任的往代码全局最优的方向去修改,而不是为了临时解决自己当前的问题选择一个比较丑陋的方案 - 因为你知道,即使你选了这个丑陋的方案,然后做了编译测试,发出review之后还是会被人以正当的理由退回来,与其浪费那么些时间做无用功,还被人很没面子的退回来,还不如一开始就做的漂漂亮亮的,久而久之,这种追求最优的习惯就会养成。
二、把关
别人能帮你发现你视觉盲点中,或者视野范围外的一些问题。毕竟,多个人多双眼睛,尤其对于比较senior,或者该领域的专家来说,总能对你有所裨益!
三、学习
别人能从你的代码中学习你优秀的解决问题的思路,写代码的技巧,这是team整体提升的一条非常好的道路。事实上,培养新人的一个方法,除了让他fix bug之外,就是让他review代码,当然,一般是作为副手。
四、通知
让整个team的人知道将有这么个change,我们的做法是创建一个mailgroup:team-cr,把team中每个人都加进来,然后每个review都cc这个组 - 然后对于那些有时间、有需要的同学,就可以监控这个组的邮件。
关于code reiview的更多相关文章
- source.android.google && developer.android.google
https://source.android.google.cn/ https://developer.android.google.cn/ https://source.android.com/co ...
- Visual Studio Code 代理设置
Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...
- 我们是怎么做Code Review的
前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
- http status code
属于转载 http status code:200:成功,服务器已成功处理了请求,通常这表示服务器提供了请求的网页 404:未找到,服务器未找到 201-206都表示服务器成功处理了请求的状态代码,说 ...
- Visual Studio Code——Angular2 Hello World 之 2.0
最近看到一篇用Visual Studio Code开发Angular2的文章,也是一篇入门教程,地址为:使用Visual Studio Code開發Angular 2專案.这里按部就班的做了一遍,感觉 ...
随机推荐
- My97DatePicker时间控件使用
刚刚工作中遇到一个修改时间空间的bug,顺带学习了My97DatePicker时间空间 网上查到的资料已经很详细: http://www.360doc.com/content/14/0606/11/1 ...
- 谈一次php无限极分类的案例
作者:白狼 出处:http://www.manks.top/php_tree_deep.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追 ...
- BIEE 目录迁移(文件夹)方式
文件夹迁移方式一(归档--取消归档): 归档:analytics中选择目录,定位至指定文件夹,更多中选择归档,保存为 .catalog文档: 释放归档: 进入目录管理器,离线方式登陆, ...
- 【转发】Html5 File Upload with Progress
Html5 File Upload with Progress Posted by Shiv Kumar on 25th September, 2010Senior Sof ...
- C#语言基础——结构体和枚举类型
结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...
- 弹出层在兼容模式和IE8模式下显示不正常
弹出层在火狐.谷歌.360极速模式.IE6下都能100%面积正常显示,但在IE8和360的兼容模式下只显示弹出层下半部分或右半部分的内容,在主页面加上: <meta http-equiv=&qu ...
- hdu1251 统计难题
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=1251 题目: 统计难题 Time Limit: 4000/2000 MS (Java/Othe ...
- 平面直接坐标系线段相交问题(小Q(钟神)的问题)
[问题描述] 小 Q 对计算几何有着浓厚的兴趣.他经常对着平面直角坐标系发呆,思考一些有趣的问题.今天,他想到了一个十分有意思的题目:首先,小 Q 会在?轴正半轴和?轴正半轴分别挑选?个点.随后,他将 ...
- VIM的强大功能
转发地址:http://coolshell.cn/articles/5426.html 简明 Vim 练级攻略 vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是 ...
- java自带线程池和队列详细讲解
Java线程池使用说明 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后 ...