对代码评审的感想(回忆篇)

对代码评审的感想(回忆篇)

回想之前钱老板开代码评审流程的讨论会,有事没去,有些遗憾,所以谈下这个当前最fashion的话题,分享下之前对代码等评审的体验。

之前在CFT的研发氛围还是比较重视代码评审的,完成度也比较好,原因有以下几个:

  1. 业务特性。我们是的业务跟钱打交道的,所以一发生问题,损失的都是钱,所以追责很严,惩罚很重,而且罚钱一般都罚老大,所以质量上的规范容易从上往下推动,事半功倍。当然线上出现问题,往往会让QA(质量管理)追着问原因以及要求拿出改进措施,作为小兵也很烦很害怕有木有~
  2. 严格的流程。所有需求都是走需求系统,通过workflow电子流一步一步走下去,测试经理、测试、开发leader、运维leader有一个审批不过,就走不到上线发布。其中测试要求开发提供代码评审结果,测试经理要求用例的评审,研发leader要求提供风险报告,并判断是否要开安全评审,这三个评审都或多或少和代码评审有关,这里顺便都讲下。

(1) 开发在提交代码之前需要进行代码评审,也有少数推到提测后再进行,这对测试来说很烦躁,因为测了一半了你跟我说要更新评审后的改动,早干嘛去了?

评审形式基本上都是线下订个会议室讲个半天,很少在线评审,由组长级带头,相关项目的开发人员对自己的代码还有逻辑进行讲解,然后总结改动点输出会议纪要。

评审主要评审实现方法上的问题为主,很少涉及编码规范和代码结构方面的问题(一般不是新人的话这方面大家都会遵守),重点关注但不限于超时、锁、系统调用、异常处理、数据字典设计等方面的问题。

测试会不会去参加代码评审呢?一般会邀请测试参加,但效果并不是很好,究其原因主要有三:

  • 没有留太多的提前介入时间给测试。以前的系统是大系统下面多个子系统这样子的,某个子系统的特性提测了,那么谁空闲了就谁去测,推崇的是测试人员的业务全精通,像我大部分时间测后台服务,有时候也被拉去测客户端,或者支援其他项目,所以测试被邀请参加评审的时候手头基本都是忙着其他项目,没有预留提前介入的时间,所以往往会一头雾水。
  • 测试的代码能力层次不齐。以前部门是很重视代码的,在提交测试报告的时候还要用工具输出代码对比,意思便是:测试人员要知道开发改了什么,有什么影响,测试人员对代码的检视水平就慢慢上去了,有次漏测,组长还拉着我一起看代码,问我为什么没有看出来。但也有一些同事代码能力比较弱的,去参加代码评审就比较吃力。当然代码能力并不决定测试水平,这个不能勉强。
  • 有时候只有测试过才对流程和系统有着更深的思考。有时候测着测着发现有地方不合理或者动摇了之前的设计,总是感叹在测试之前发现就好了,但是在测试前并没有这么深刻的实践和思考,所以在测试用例评审的时候才对于开发的实现逻辑有一些挑战

(2)用例评审也是线下通过评审会的方式,主要在测试了一轮以后召开(这个时间点我觉得是蛮好的,测试对系统有了较深的认识)。邀请项目的开发,项目的测试人员,其他资深测试人员参与。主要由项目的测试人员讲解系统实现和对应的测试用例

评审的范围比一般的开发评审用例更为宽泛,对于系统设计或者代码实现上有问题,可以提;如果开发逻辑有问题或者测试用例设计有问题,也会马上拉出代码一起确认,比如一个入参测试的用例为一个fee参数的长度超过32位报错,遭到挑战:为什么是32位,通过开发和代码确认是因为fee字段的值类型用了int,评估后认为int太短,必须用long,于是开发和测试都要进行修正,而由开发评审用例一般看到这个的确符合了代码逻辑往往就放过了。所以一般的评审结果里,测试的用例和开发的代码都会有需要优化的地方。

(3)安全评审。项目需要出具风险报告;高风险的项目需要找安全接口人进行评审(组长或副总监级),讲下涉及的风险点,解决的思路和实现的代码。经常因为需要解决老大新提出的安全风险而延迟上线有木有,说多了都是泪。
风险报告的某一部分,比如这样的

个人感觉代码评审的好处有如下几点:

  1. 对于开发来说。很多项目将模块分给多人,然后大家分别开发或者是用先有代码再有文档这样的开发模式开发,模块之间的交互可能是支离破碎的,模块代码的风格不一、质量参差。通过评审,让开发对互相的模块有一定了解,同时针对自己不足的代码先优化下,提高代码质量。另外有新人的项目团队,通过资深人士的review,也可以帮助新人更快融入项目,提高水平。
  2. 对于测试来说。参与代码评审可以了解系统特性,需要关注的功能点,有时会请教开发这个地方如何测试或者要求开发给个工具或者加个开关,有助于测试用例的设计和后续的测试,当然最重要的:不要让垃圾代码浪费我时间。当然线下的评审可以讨论,不懂还可以提问,比线上的评审有意思~~

当然缺点就是耗时~~如果开展了代码评审但又不认真去做,那就是白白耗时。所以在CFT,大家开评审会还是蛮认真的,然而我不知道大家是真认识到了代码评审的好处还是被流程束缚着。直到后来,之前在CFT的几个开发组也一起去了WXG, 由于新部门没有强制的代码review流程,结果大家开始不做代码评审了。。。这说明用流程强制容易,但让质量意识深入人心,难啊~~所以,我一直想在项目中引入代码评审,然而这不是用不用gerrit的问题,而是该如何让开发心甘情愿的接受代码评审,用什么样的方式去实现它并产生应有的效果的难题。

PS:

今天开发看了下另一个开发的代码:说怎么写得那么烂,如果QA推动代码评审,我全力支持。

——感觉这世界还是有救的

时间: 2025-01-04 17:02:50

对代码评审的感想(回忆篇)的相关文章

创业三年来的一些感想 - 创业篇1

游戏篇 见:创业三年来的一些感想 - 游戏篇 创业篇 公司初创人员有10几个, 大都来自金山内部.我经历了公司从无到有的整个过程,从申请营业执照,到选取办公地点.办公设备,申请域名,搭建Git,RTX,Wiki,项目管理平台Redmine,持续构建CCNet-- 这些都是一个公司必要的支持.而对于我来说,还是蛮新鲜的,能接触到一些平时不容易接触到的东西,初创人员也是激情四溢,各擅所长,感觉平时听他们聊天都能学习到不少的知识. 即使我平时游戏玩的够多,自认为也算是个中高端游戏玩家.但做为一个刚刚涉

PM撸代码之Android【武侠篇:封装、继承、多态】

80 PM撸代码之Android[武侠篇:封装.继承.多态] 这是Android系列的第六篇文章,在之前的一篇文章中,已经了解了面向对象的基础概念,这一篇将会通过武侠江湖的类比,讲解面向对象的更多内容,感谢小伙伴们一直以来的支持. 武林门派的三个特征 1 独门秘籍(封装) 2 传承的门派(继承) 3 看情况使功夫和换个姿势说明问题(多态) [封装] 1 门派独门秘籍(封装) 前一篇已经说到,当达摩上了嵩山以后,江湖就正式进入门派时代.每个门派区别于其他门派,肯定是因为这个门派拥有独门武功秘籍.举

PHP 代码评审的 10 个提示

http://www.oschina.net/translate/top-10-php-code-review-tips PHP 代码评审的 10 个提示 以下是这篇文章介绍的重点:1.业务功能2.框架相关的编码指南3.面向对象的原则4.PHP的特异性标准5.编程相关的最佳实践6.设计模式7.代码覆盖率8.安全9.异常处理10.集成模式在进入细节之前,请让我提提我的想法,我认为,涵盖各个方面的代码质量,以下8个参数(ISO 25000平方标准)会有不同的代码审查标准. 功能的适用性可维护性可用性

麻省理工18年春软件构造课程阅读04“代码评审”

本文内容来自MIT_6.031_sp18: Software Construction课程的Readings部分,采用CC BY-SA 4.0协议. 由于我们学校(哈工大)大二软件构造课程的大部分素材取自此,也是推荐的阅读材料之一,于是打算做一些翻译工作,自己学习的同时也能帮到一些懒得看英文的朋友.另外,该课程的阅读资料中有许多练习题,但是没有标准答案,所给出的答案均为译者所写,有错误的地方还请指出. 译者:李秋豪 审校: V1.0 Thu Mar 8 22:58:41 CST 2018 本次课

同行代码评审过程中的实践经验

声明:该文经我翻译后首次发表在伯乐在线上,不论什么形式的转载都请标明原处. 数百万年前,猿从树上下来,进化出了对生拇指,终于.变成了人类. 我们以相似的眼光来看下强制性代码评审(Code Review):好像是一种能在软件开发这块广阔的领域里将人类从兽里分离出来的东西. 只是,我有时候会从我们的团队成员里听到以下这种评论: "这个项目的代码评审根本就是浪费时间." "我没有时间做代码评审. " "我的项目公布延期了.都是由于我那懦弱的同事还没有做不论什么评

6.我们真的做了代码评审

静态代码检查工具StyleCode. 上一章我说了设计评审和测试用例评审都是为了提升产品质量问题,后来我们又做了代码评审,但是代码评审比设计评审难搞多了,对于开发来说最在意的就是自己的代码,让别人对自己的代码指指点点,虽然是好的建议但也会让人不爽. 准备搞代码评审之前以前就尝试过,搞着搞着最后的结果只是变成一种形式而已,大家热情都不高,反而给团队增加了负面的情绪.在现在团队中由于代码质量问题,减少bug的产出,在回顾会议中团队提出可以试一下代码评审,是对这个解决办法存在担忧的.我们采用style

自动提交Git branch代码评审到Review Board系统

背景 敏捷软件开发中,越小的反馈环,意味着软件质量越容易得到保证. 作为组件团队,我们的开发任务中,往往存在一些特性涉及到几十个功能点,开发周期持续数周或数月的情况.如何在开发过程中保证软件质量,是个很重要的话题.进行有效的细粒度的代码评审,是常见的手段之一.但是这一希望在落地时,多多少少会遇到些来自方方面面的阻力: Review Board不支持Git branch的代码评审提交: Git不熟,不知道怎么生产正确的patch文件来提交到Review Board上: Review Board不会

使用ReviewBoard进行代码评审经验总结

代码评审 代码评审(CodeReview),顾名思义是对代码进行评审,是软件工程的活动之一. 通过代码评审可以保证代码质量,促进团队知识共享--好处多多. 版本控制与代码评审 软件工程的各个活动总是离不开工具的支持. 代码评审工具首先必须和版本控制工具相结合的. 现在主流的两种版本控制工具:SVN和GIT. GIT有个Google开发的代码评审工具Gerrit,可以在提交前进行代码评审,评审通过之后才允许提交到版本库. 其次,代码托管平台GitLab(号称是GitHub的开源实现)也可以用来进行

最新apache+svn+reviewboard实现在线代码评审

本文重点说reviewboard的安装 作用,在线代码评审工具. --------------------------------------------------------------------------- mysql安装 yum -y install gcc gcc-c++ make cmake autoconf automake ncurses* bison* zlib* expat* openssl* apr* neon* yum -y install mysql-server