文档章节

Code Review是软件工程中很有意义的一个活动

liuran8354
 liuran8354
发布于 2014/12/05 00:02
字数 1279
阅读 2691
收藏 81

      Code reviews 确实有很多用处,而在实际工作中它被用来找到程序bug、保证代码风格、编码标准。过于负担了。它不应该承担发现代码错误的职责,而是审核代码的质量,如可读性,可维护性,健壮性以及程序逻辑对需求的实现正确完整性。程序中的bug应该由单元测试、集成测试、性能测试、系统测试、回归测试来保证的,其中主要是单元测试是最重要的环节,因为那是最接近Bug,也是Bug没有扩散的地方。

      它不应该成为保证代码风格和编码标准的手段。编码风格和代码规范都属于死的东西,每个程序员在把自己的代码提交团队Review的时候,代码就应该是符合规范的,这是默认值,属于每个人自己的事情,不应该交由团队来完成,否则只会浪费大家本来就不够的时间。

      今天,在中国的很多公司里,上面这两件事依然被认为是Code Reivew最重要的事,但在实际工作中够看到很多开发Team抱怨Code Review就是一个形式,费时费力不说,发现的问题还不如测试。对于代码规范,这应该是程序作者自己需要保证的,而且有一些工具是可以帮你来检查代码规范的。

       上述言论并不是说,在Code Review中报告一个程序的bug或是一个代码规范的问题。我只是说,那并不是Code Review的意图。

       如何使Code Review更有意义。

       经常进行Code Review。就好像人家都把整个房子盖好了,大家Review时这挑一点、那挑一点,有时候触动地基或是承重墙体,需要大动手术,让人返工,这当然会让盖房的人一下就跳起来极力地维护自己的代码,最后还伤了团队成员的感情。所以,千万不要等大厦都盖好了再去Reivew,而且当有了地基,有了框架,有了房顶,有了门窗,有了装修的各个时候循序渐进地进行Review,这样反而会更有效率,也更有帮助。当然,在敏捷开发中,他们不需要Code Reivew,其实,敏捷开发中使用更为极端的“结对编程”(Pair-Programming)的方法 —— 一种时时刻刻都在进行Code Review的方法,个人感觉在实际过程中,这种方法有点过了。

      保持积极的正面的态度。程序最大的问题就是“自负”,程序员在Code Review的时候,开始抨击别人的代码,质疑别人的能力。他们指责对方的目的是想告诉大家自己有多么的牛。无论是代码作者,还是评审者,都需要一种积极向上的正面的态度,作者需要能够虚心接受别人的建议,因为别人的建议是为了让你做得更好;评审者也需要以一种积极的正面的态度向作者提意见,因为那是和你在一个战壕里的战友。

      Code Review不要太正式,而且要短。忘了那个代码评审的Checklist吧,走到你的同事座位跟前,像请师父一样请 他坐到你的电脑面前,然后,花5分钟给他讲讲你的代码,给他另外一个5分钟让他给你的代码提提意见,这比什么都好。

       尽可能的让不同的人Reivew你的代码。不同的人有不同的思考方式,有不同的见解,所以,不同的人可以全面的从各个方面评论你的代码,有的从实现的角度,有的从需求的角度,有的从用户使用的角度,有的从算法的角度,有的从性能效率的角度,有的从易读的角度,有的从扩展性的角度……。当然,不要太多了,人多嘴杂反而适得其反。

       学会享受Code Reivew。如果你到了一个人人都喜欢Code Reivew的团阿,那么,你会进入到一个生机勃勃的地方,在那里,每个人都能写出质量非常好的代码,在那里,他们相互学习,相互帮助,不仅仅是写出好的代码,而且团队和其中的每个人都会自动进化,这个是一个团队。


© 著作权归作者所有

下一篇: 浅谈入行
liuran8354
粉丝 0
博文 3
码字总数 3430
作品 0
沈阳
其他
私信 提问
加载中

评论(13)

anduo
anduo
我们团队目前这块做的非常好
刘利民
刘利民
就怕出现内部斗争
赵立超
赵立超
我的codeReview就是代码审查和测试。编码风格我已经不想说了,因为懒得说,没用。
fly2xiang
fly2xiang

引用来自“代码成湿”的评论

说个实际应用情况的例子,某同事写js轮播效果过程:1.网上随便下了个轮播的demo,2.把这个文件夹考到项目根目录下。3.首页用iframe引入该demo/index.html.4.换掉demo文件夹里示例图片。5.完工提交。
霸气
夏至如沫
夏至如沫

引用来自“Ged-J”的评论

如何与令人讨厌的同事review ,是个课题
哈哈。。喜欢吹牛逼,变量名都不起的同事伤不起
盖塔40K
盖塔40K
说个实际应用情况的例子,某同事写js轮播效果过程:1.网上随便下了个轮播的demo,2.把这个文件夹考到项目根目录下。3.首页用iframe引入该demo/index.html.4.换掉demo文件夹里示例图片。5.完工提交。
vingzhang
vingzhang
我们会有,对代码的修改不确定的时候,会找同事帮忙review一下,一些关键位置的修改也需要review,尤其涉及生产环境时
金拱门
金拱门
难啊。
吐槽的达达仔
吐槽的达达仔
这,还是教一下如何Code Review的好。。
12叔
12叔
会要求徒弟跟我的风格一致。
OSChina 技术周刊第十二期 —— 每周技术抢先看

每周技术抢先看,总有你想要的! 移动开发 【博客】Android仿微信录音功能,自定义控件的设计技巧【OSC 新客户端部分功能解说哦】 前端开发 【翻译】AngularJS – 如何处理 XSS 漏洞【我就是...

OSC编辑部
2014/12/07
3.4K
4
OSChina 技术周刊十二期

每周技术抢先看,总有你想要的! 移动开发 【博客】Android仿微信录音功能,自定义控件的设计技巧【OSC 新客户端部分功能解说哦】 前端开发 【翻译】AngularJS – 如何处理 XSS 漏洞【我就是...

OSC编辑部
2014/12/07
316
0
Gerrit代码Review入门实战

代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略。在实践中,给大家推荐一款免费、开放源代码的代码审查软件Ger...

illy安智
2016/07/04
216
0
本科生的项目总结

很庆幸身在华中科技大学,也很庆幸能在大二就加入Dian团队,使我能够快速地进步和成长,并作为一个本科生就能够以核心身份参与到真实的软件项目中,如今在两年过去了,经历了两个中型的软件项...

乐搏学院
2016/12/06
18
0
从Code Review 谈如何做技术

这两天,在微博上表达了一下Code Review的重要性。因为翻看了阿里内部的Review Board上的记录,从上面发现Code Review做得好的是一些比较偏技术的团队,而偏业务的技术团队基本上没有看到Cod...

张旭0512
2014/12/23
267
2

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot系列:Spring Boot集成Spring Cache

一、关于Spring Cache 缓存在现在的应用中越来越重要, Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术,并支持使...

杨小格子
20分钟前
6
0
二、MySql存储引擎简介(笔记)

MySql体系 先来看一下MySql的架构图: MySql的存储引擎在架构的最下层,提供了各式各样的存储特性,下面介绍几个常用的存储引擎。 MyISAM 官方提供的一个存储引擎,在数据库的系统表和系统生...

XuePeng77
昨天
4
0
聊聊nacos config的deleteConfig

序 本文主要研究一下nacos config的deleteConfig ConfigController nacos-1.1.3/config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigController.java @Controller@Re......

go4it
昨天
5
0
面试:原来Redis的五种数据类型底层结构是这样的

关注我,可以获取最新知识、经典面试题以及微服务技术分享   在Redis中会涉及很多数据结构,比如SDS,双向链表、字典、压缩列表、整数集合等等。Redis会基于这些数据结构自定义一个对象系统...

ccww_
昨天
8
0
java发送html模板的高逼格邮件

最近做了一个监测k8s服务pod水平伸缩发送邮件的功能(当pod的cpu/内存达到指定阈值后会水平扩展出多个pod、或者指定时间内pod数应扩展到指定数量),一开始写了个格式很low的邮件,像下面这样...

码农实战
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部