关于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 ...
随机推荐
- 基于C++ 苹果apns消息推送实现(2)
1.该模块的用途C++ 和 Openssl 代码 它实现了一个简单的apns顾客 2.配套文件:基于boost 的苹果apns消息推送实现(1) 3.最初使用的sslv23/sslv2/sslv3仅仅 ...
- 用windows性能监视器监控sqlserver的常见指标
用windows性能监视器监控sqlserver的常见指标 上边文章中提到win的性能监视器是监控数据库性能必备的工具,接下来我就给大家介绍一些常见的监控指标,其实无非就是磁盘,cpu,内存等硬件 ...
- Java多线程详解
Java线程:概念与原理 一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程 ...
- MVC模型部分验证
ASP.NET MVC模型部分验证 在很多情况下,我们为了代码的复用可能会存在ViewModel共用的情形.比方说,web应用中常常会遇到的一个需求就是用户找回密码的功能.用户首先要验证通过验证邮箱( ...
- PHP: 判断是否是JSON数据
原文:PHP: 判断是否是JSON数据 首先要记住json_encode返回的是字符串, 而json_decode返回的是对象. 判断数据不是JSON格式: function is_not_json( ...
- GRIDDATA(表格)第二版
JQUERY 插件开发——GRIDDATA(表格)第二版 开发背景 表格插件之前我也写个一篇,当时写那个插件的时候,我自己还没有总结出写插件的方法,虽然功能实现了,但是使用起来还是有点别扭的,并且需要 ...
- jquery 触屏滑动+定时滚动
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- 配置serv-u access数据库遇到的一些问题
配置好access数据库后,需要建个web页面来供用户修改密码,但修改时,提示:odbc被占用无法打开. serv-u一直在保持打开access数据库.我们需要将数据库设置默认打开方式为共享,不锁定. ...
- strus2 action重复执行问题
近日做项目,有两个模块功能类似,就写到了一个action中,方法起名为getXXX1,getXXX2 最后在两个模块去调用的时候,分别调用DemoAction!getXXX1.action和DemoA ...
- 2013.4.A
=-=最近简直忙疯了.....两眼泪汪汪的...一个星期又磨磨蹭蹭的刷了一套 1.java_c 题1 Java vs C++ [问题描述] Java和C++两种语言的辩手都可以相互争论数小时去证明他们 ...