文档章节

7 个 code review 的技巧(转)

哥特复心
 哥特复心
发布于 2017/05/07 22:06
字数 1121
阅读 21
收藏 0
点赞 0
评论 0

1.先确定 code review 的目标优先级

在 code review 之前先和你的团队成员明确 code review 中事项的优先级。 作者认为 code review 中应该做的事: 熟悉同事在编程时的思考方式,这样其余同事以后如果有需要就可以更轻松、快速的修改代码。 向同事介绍修改了哪些文件,增加了什么样的功能,这样在问题出现时,可以保证至少有两个人可以帮助诊断、解决问题。 不建议在 code review 中做的事: 找 bug。自动化测试、运行程序要比几个人坐着看代码有效率多了。 检查代码规范。现在的 IDE 和编辑器都有自动规范代码的工具,为什么还要在这方面浪费人力呢?

2.把程序跑起来

读其实是一种很不自然的和代码交互的方式。仅仅靠读代码来找 bug 效率实在不能算高,要知道计算机能比你的大脑更好地运行代码。 把程序运行起来,亲自试一试,或许你会有一些和他们测试时不同的操作,发现一些他们遗漏的问题。 并且现在的 IDE 中断点调试,都能够很详细的显示运行时的程序数据,这能帮助你更容易的理解这段代码是如何运行的。

3.明确方法的调用层次

作者发现很多人谈起 code review 的第一印象就是一堆人坐在一个电脑面前一行一行的看代码。但这么做其实效率是很低的,除非你的经验非常丰富,否则真的不建议就靠一双眼睛和你的大脑来做 code review。用工具明确方法的调用层次,能帮助你更有效的梳理代码逻辑。

4.尽可能及时的进行 code review

当你收到别人的 code review 邀请时,尽量第一时间就开始。因为这时作者的记忆是最清晰的,并且通常会对你的及时反馈心怀感激,这种正面情绪对于 code review 是非常有帮助的。 如果你觉得自己在面对 code review 时有困难的话,作者在这里推荐了两个方法: 事先设置一个时限,比如半小时。也就是在你的第一次 review 中,先花半个小时理解变动的代码,写下自己的问题。如果在这个时间范围内,你不能确定代码变动是否没有问题,把你的想法和问题先发给作者,之后再确定一个时间进一步的 review。 在你的机器上保留两个独立的仓库。一个用于你自己的修改,另一个用于 review。这样你和作者之间的修改就能够保持彼此独立。

5.在你读代码之前,先想想自己会怎么做

先读一下功能说明,思考下如果是自己来可能会怎么做,之后再查看作者实际做出的修改。如果有和你想得不一样的地方,就可以和作者进行交流,讨论清楚为什么。这样做能使得你们两个都得到成长,还能提高 code review 的效率。

6.在实际的开发环境中 review

现在的 code review 早就不是光用眼睛看啦,各种强大的 IDE 完全可以成为我们的一大助力。善用 IDE 的力量。

7.不要吝啬你的赞扬,除非你能证明那里确实有一个 bug

每个人的内心深处都是期待被别人称赞的,因此在 code review 开始的时候不要老是揪着变量命名、代码重复之类的问题。先集中注意力在真正重要的地方,给作者一个舒服、放松的心态(通常刚开始 code review 的时候作者是会很紧张的)。这样他们也就会乐于接受你对于代码风格等方面的建议了。: ) 作者:Hevin https://zhuanlan.zhihu.com/p/24562689 https://blog.asana.com/2016/12/7-ways-to-uplevel-your-code-review-skills/?utm_source=wanqu.co&utm_campaign=Wanqu+Daily&utm_medium=website

本文转载自:

共有 人打赏支持
哥特复心
粉丝 109
博文 68
码字总数 40593
作品 0
长沙
高级程序员
开源学习好帮手:最棒的50个开源博客

开源软件由庞大的社区提供支持,这个充满活力的社区造就了一批一流的博客。它们涵盖了从开源新闻,到最新发布的教程和黑客技巧的各个方面。 我们精选出这些博客,因为他们精通相关专业,不仅...

吴宝兴 ⋅ 2010/07/13 ⋅ 0

什么是Code Review

Code Review 是一种通过复查代码提高代码质量的过程,在XP方法中占有极为重要的地位,也已经成为软件工程中一个不可缺少的环节。 本文通过对Code Review的一些概念和经验的探讨,就如何进行C...

长平狐 ⋅ 2013/01/06 ⋅ 0

Jupiter(Eclipse代码评审插件)简单总结

1、Jupiter是开源的Eclipse代码评审插件,以XML形式存储review数据。 2、review数据需要在版本控制系统(CVS/SVN)中传递。 3、三个阶段:个人评审阶段(Individual Phase)、团队评审阶段(...

donhui ⋅ 2014/11/29 ⋅ 0

AEAI CRM V1.6.0 升级说明,开源客户关系管理系统

AEAI CRM V1.6.0 升级说明: 1 升级说明 AEAI CRM v1.6是基于AEAI DP v3.8.0_20170228进行打包部署的,本次AEAICRM升级内容主要是针对数通畅联销售对客户拜访任务管理进行的一次全面的升级,...

数通畅联 ⋅ 2017/03/31 ⋅ 0

追求代码质量 —— 闲谈团队的代码质量

定义代码质量 首先当你开始意识到项目里代码质量差的时候,恭喜你已经有了代码审美。这是推进编程水平的重要的一步。很显然,如果你不知道什么是差的代码,你就写不出好的代码。写不出好的代...

局长 ⋅ 2017/09/18 ⋅ 7

Windows安装gerrit工具方法

安装Python,python版本最好选择稳定版本,已验证版本2.7.11 [python2.7.11以上版本自带安装了pip,可以省略步骤4至步骤5] 安装Python时,指定的安装路径不能含有空格(已知的Pip Bug) 安装完...

JennerLuo ⋅ 2016/03/11 ⋅ 0

为什么优秀开发者进入Google后就不参与开源了

转自http://timyang.net/google/open-source/ 很多优秀的开发者在进入Google之前都是非常活跃的开源贡献者,但是进入Google之后往往就销声匿迹了,包括嘲笑了此现象的Memcached 作者Brad在进...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

What Is a Code Review and Why Do You Need It?

Building a startup is hard, building software for it is not easier. But what makes software great? Good code. But how can you be sure that the code is good? Working with many cl......

Aleks Pedchenko ⋅ 2017/12/01 ⋅ 0

那些能够有效减少编程时bug出现的技巧

呵呵呵,提到了bug这件事我真的是哔了狗了。经常自以为写得天衣无缝的一段程序,就是运行出错,真是脑水都要气爆出来。而且有些bug它就是那么调皮。找你几天你都找不出来。(自己写的代码,自...

ApplySquare ⋅ 01/22 ⋅ 0

iOS Code Review

Code Review的意识 作为一个 ,不仅要提交可工作的代码(Deliver working code),更要提交可维护的代码(Deliver maintainable code) 必要时进行重构,随着项目的迭代,在计划新增功能的同时,...

法斗斗 ⋅ 05/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【elasticsearch】 随笔 Date datatype

一。时间类型的本质 首先json是没有时间类型的,对于es来说,时间类型的标示可以是下面三种情况 1.一个时间格式的字符串,如:"2014-11-27T08:05:32Z","2015-01-01" or "2015/01/01 12:10:3...

xiaomin0322 ⋅ 24分钟前 ⋅ 0

阿里云资源编排ROS使用教程

阿里云资源编排ROS详细内容: 阿里云资源编排ROS使用教程 资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、...

mcy0425 ⋅ 27分钟前 ⋅ 0

适配器设计模式

1、适配器模式 把一个类的接口变换成客户端所期待的另一种接口 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 分为类的适配器模式和对象的适配器模式 2、类适配器模式 类的适配...

职业搬砖20年 ⋅ 31分钟前 ⋅ 0

npm操作报错 _stream_writable.js:61

有一天 不知道什么原因(估计和node的版本有关),无论你做什么npm的操作 都会报错/usr/local/lib/node_modules/npm/node_modules/readable-stream/lib/_stream_writable.js:61 这时候只要执...

lilugirl ⋅ 35分钟前 ⋅ 0

Eclipse安装插件的几种方式

Eclipse魅力之一就是支持可扩展的插件,来丰富自身的功能,这种方式也是建立在开源思想之上的。具体使用什么方式去安装插件,要看我们拿到的是什么。 1. 拿到的是一串URL,如http://subclips...

GordonNemo ⋅ 37分钟前 ⋅ 0

div图片叠加

css实现代码如下: <div style="position: relative;"><!--这个层为外面的父层,需设置相对位置样式--> <div style="position: absolute;"><!--子层,需设置绝对位置样式--> <i......

niithub ⋅ 39分钟前 ⋅ 0

作用域slot

如果父组件需要使用子组件中的内容怎么办,比如父组件需要控制子组件的显示 <div id="root"><child><template slot-scope="props"><h1>{{props.item}} <div>编辑</div></h1><......

金于虎 ⋅ 41分钟前 ⋅ 1

HongHu commonservice-eureka 项目构建过程

上一篇我们回顾了关于 spring cloud eureka的相关基础知识,现在我们针对于HongHu cloud的eureka项目做以下构建,整个构建的过程很简单,我会将每一步都构建过程记录下来,希望可以帮助到大家...

明理萝 ⋅ 44分钟前 ⋅ 1

xml和对象的相互转化

@Data//setter和getter方法,toString和equals,hashcode方法@EqualsAndHashCode//代表重写equals和hashcode方法@XmlAccessorType(XmlAccessType.FIELD)public class Classroom {@X......

拐美人 ⋅ 44分钟前 ⋅ 0

tableView cell的高度 分组头部尾部的高度 自适应

@property (nonatomic) CGFloat rowHeight; // default is UITableViewAutomaticDimension@property (nonatomic) CGFloat sectionHeaderHeight; // default is UITableViewA......

娜一片蓝色星海 ⋅ 45分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部