关于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專案.这里按部就班的做了一遍,感觉 ...
随机推荐
- 机器数据的价值 - Web 访问日志和数据库审计日志
计算机数据 大量的数据流,不断增长的来源,蕴含着巨大的价值 在 Splunk,我们大量谈及计算机数据.这些数据是指在数据中心.“物联网”和互联设备世界中运行的所有系统产生的数据.其中包括支撑组织的应用 ...
- Javascript 优化项目代码技巧之语言基础(一)
Javascript的弱类型以及函数作用域等规则使用编写Javascript代码极为容易,但是编写可维护.高质量的代码却变得十分困难,这个系列的文章将总结在项目开发过程中,能够改善代码可读性. ...
- 用Phaser实现Flappy Bird 游戏
How to Make a Flappy Bird in HTML5 With Phaser - Part 1 Flappy Bird is a nice little game with easy ...
- 安装mysql odbc遇到error 1918.errror installing ODBC driver mysql ODBC 5.3 ANSI Drive
环境:Windows server2008r2 安装mysql-connector-odbc-5.3.6-win32 报错 相信错误信息:Error 1918.errror installing OD ...
- iOS极光推送,两次Bundleid不一致( 开发证书没有通过验证 是否重新上传证书)的解决方案
极光在配置ios端推送时,需要上传p12证书,如果遇到如下图:: 证书上传未通过的原因一般有: 1.当前上传的p12证书密码输入有误: 2. 证书导出的时候展开了证书,把个人私钥导了出来,导证书的时候 ...
- Qt回忆录之配置开发环境
光阴荏苒,用Qt开发已经一年多了.在Windows上开发GUI,最常用的莫过于MFC,WinForm,WPF以及Qt.MFC和Qt是基于C++,而WinForm和WPF一般是基于C#,当然在PC上基于 ...
- AngularJS基础概念
作用域.控制器.指令 作用域 应用的作用域是和应用的数据模型相关联的,同时作用域也是表达式执行的上下文.$scope对象是定义应用业务逻辑.控制器方法和视图属性的地方. 作用域是应用状态的基础.基于动 ...
- 理解 Linux 网络栈(1):Linux 网络协议栈简单总结
本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...
- MMORPG大型游戏设计与开发(客户端架构 part11 of vegine)
从早年的无声电影到现在的逼真3D大片,人类在科技上可谓是一再突破.不知道有没有人经历过那无声的日子,没有声音的世界,咱们的耳朵也就失去了它本有的用途了.在游戏世界中,声音元素成了必不可少的一部分,一个 ...
- POJ1160 Post Office[序列DP]
Post Office Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18680 Accepted: 10075 Des ...