关于code reivew
关于code reivew
先谈谈三个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 reivew的更多相关文章
- 关于code reiview
先谈谈三个code review的关键因素: 一.创建review要简单 code reivew是一个程序员日常工作中经常做的一件事,理论上来讲,任何一个将要submit到SCM的change,都必须 ...
- <转>如何进行code review
转自: http://pm.readthedocs.org/zh_CN/latest/codereview/howto.html 如何进行code review? code reivew是保障代码质量 ...
- Code Review中的几个提示
原文:http://coolshell.cn/?p=1302 酷壳 Code Review中的几个提示 陈皓 Code Review应该是软件project最最有价值的一个活动,之前,本站发表过&l ...
- 如何在python脚本开发做code review
在软件项目开发中,我们经常提到一个词“code review”.code review中文翻译过来就是代码评审或复查,简而言之就是编码完成后由其他人通过阅读代码来检查代码的质量(可编译.可运行.可读. ...
- 为什么要Code Review
刚才专注看了下zwchen的博客,读到Code Reivew这一篇,觉得自己也了说话的冲动. 我们Team实施Code Reivew近5年,到今天,我们的结论是: Code Review是我们项目成功 ...
- Kent Beck揭秘Facebook开发部署流程
http://www.infoq.com/cn/news/2013/10/facebook-development-deployment Facebook是世界上最大的社交网站,有超过10亿用户每月至 ...
- iOS 持续集成
iOS 持续集成系列 - 开篇 前言 iOS 开发在经过这几年的野蛮生长之后,慢慢地趋于稳定.无论开发语言是 Objective-C 还是 Swift,工程类型是 Hybird 还是原生,开发思想是 ...
- 由苹果的低级Bug想到的
2014年2月22日,在这个“这么二”的日子里,苹果公司推送了 iOS 7.0.6(版本号11B651)修复了 SSL 连接验证的一个 bug.官方网页在这里:http://support.apple ...
- iOS - CodeReview 代码评审
1.CodeReview Code Review 中文应该译作 "代码审查" 或是 "代码评审",这是一个流程,当开发人员写好代码后,需要让别人来 review ...
随机推荐
- 用Iconv应对NodeJs对称加密技术在汉字编码与NoSQL的一些坑洞
·起因 汉字编码技术在实际应用中总是会存在这样或者那样的问题,尤其是在一些热门NoSQL方面多少会遇到挑战.比方说Cassandra字符集还不直接支持GB2312,要想存储写汉字那可真是麻烦.当然这还 ...
- 《Windows游戏编程技巧大师》就DirectDraw而创建DirectDraw知识笔记
1.DirectDraw 这可能是Directx中最重要的技术,由于它是2D图形赖以实现的渠道.也是Direct3D构建于其上的帧缓冲层. 2.DirectDraw是由非常多借口组成的.共同拥有5个接 ...
- Hack 语言学习/参考---1.2 Hack Background
Hack Background Facebook was initially built with PHP. Parameters and return types were specified in ...
- Ubuntu 14.04 编译newLISP 10.6.0
1. 确保安装了gcc4.8.2 2. 安装须要的库: apt-get install libreadline6 libreadline6-dev 3. 下载并解压newLISP源码,这个不多说了,去 ...
- Excel基于POI导入导出的Annotation化之路(一)
Excel在web项目里的使用变得越来越广泛,特别是和线下耦合度较高的业务,Excel导入导出变得非常频繁,尽管很多人写了诸多的工具方法,但是终究没有解决一个问题:有效的控制字段英文名称和实际表头名称 ...
- javascript 验证 yyyy-MM-dd HH:mm:ss 的正则表达式
原文:javascript 验证 yyyy-MM-dd HH:mm:ss 的正则表达式 ^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13 ...
- C语言库函数大全及应用实例十
原文:C语言库函数大全及应用实例十 [编程资料]C语言库函数大全及应用实例十 函数名: qsort 功 能: 使 ...
- API接口开发简述示例
作为最流行的服务端语言PHP(PHP: Hypertext Preprocessor),在开发API方面,是很简单且极具优势的.API(Application Programming Interfac ...
- POJ 1579-Function Run Fun(内存搜索)
Function Run Fun Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16503 Accepted: 8514 ...
- 使用Clean() 去掉由函数自动生成的字符串中的双引号
有时候由Excel单元格函数軿凑出来的字符串会自带双引号 效果如下: 想这种这个情况,刚好我们軿凑出来的是SQL语句, 执行的时候是去掉双引号, 这时候可以使用Excel自带的函数来去掉双引号 Cle ...