美文网首页软件测试管理
为什么代码检视总被忽视?

为什么代码检视总被忽视?

作者: 一杯咖啡的能量 | 来源:发表于2019-01-26 23:33 被阅读16次

我从事了近6年的Java开发,经历过几个人的团队,也参与过几百人的大项目。对于代码检视活动,我有幸地参与了很多很多次,也尝试过多种不同的检视形式。但得出一个事实,很少有团队很重视代码检视活动,能够从始至终地坚持做。

从新员工进公司或者部门开始,代码检视的重要性被反复强调和宣传,以至于很多新兵蛋子都可以说上几个代码检视的好处,比如,提前发现bug节约成本、团队内知识分享、提升项目的代码水平等等。但是,在具体实践时,代码检视活动却总是不尽如人意。如检视人员参与不够,检视出的问题价值不高,代码检视活动被其他事情中断,检视结果一直未闭环等。

为什么代码检视活动常常被忽视?我觉得可以总结为以下几种情况。

1. 代码检视没有标准,无所适从。对于检视什么内容没有统一的认识,检视的重点往往由参与人的水平决定,不少人只是拿着公司、部门的代码规范做Check。我经历过很多次飞检活动,一伙人总徘徊在注释、变量、方法命名等风格类问题上(我并不是说代码风格不重要,很多工具可以保证风格大致的一致)。这种检视的结果是,开发人员对你的检视意见不认可,而你却觉得检视很重要。我听到过太多开发人员对此的抱怨。

2. 对于个人而言,未明显提升编码水平。检视意见不能真正提升代码的质量(如架构、可维护性、可靠性、安全性等)。参与的人对具体的业务不熟,仅凭感觉和经验做一些检视,往往仅检视出一些鸡毛蒜皮的问题。而对开发人员来说,他们对代码检视有更多的期望,他们期望能够发现代码架构、代码的组织结构、业务的一致性等类别的关键问题,他们期望学会识别代码坏味道的技能,他们期望提升优化坏味道代码的能力。如果你们只是在Check规范,收益比实在是太低。

3. 对于团队来说,短期收益有限。对于团队而言,在有限的资源内最大化当前利益是最实在的选择,而对长期的收益,往往会被忽视。不可否认的是,在我参加的所有团队中几乎都是一样的。我所在的公司体量很大,每个版本都有很多KPI指标,如圈复杂度、方法的最大行数、代码重复度、静态检查、白盒等等指标。这些量化的指标是团队绩效考核的一部分,当然成为工作的一部分。对于团队来说,好的KPI远比代码检视收益来的直接。当然,实际结果往往是,由于代码质量问题,项目组一直都在解决问题或者解决问题的路上。但谁也不去承认和代码检视的关系究竟又大,同时,随着组织的变化、架构变更,半年一年后会怎么样有谁会顾虑呢。眼前的利益才是最实在的。

4.检视是一种压力,而不是技术人员的互动。代码检视活动本应该是开发人员主动提升代码的一种方式,开发人员拿代码作为载体互相交流,享受其中的碰撞火花。但有些大佬喜欢将检视结果作为员工绩效考核的一部分,参与检视只是作为工作的一项任务,甚至产生开发人员间的不信任情绪。

5.团队存在一种病——做得好了并不能得到认同。有个同事跟我讲过一个真实的例子,他们团队在刚接手业务时,当时发现了一个偶现的bug,然而他们也忘记修改了。在一年后的某一天,有个局点出现了该bug,他快速响应并解决了该问题。最后,一线先感谢了他一番,接着,项目组的领导、领导的领导将他树立为标杆。他说,假如他在一年前解决了该问题,也许他什么也不是。

不可否认,我们往往都存活于功利性团队中。功利性团队无可厚非,如果我们把原因归结于功利性团队的文化上,那我们什么也做不了。我们要探讨的是在已有环境下,如何让代码检视回归到合适的位置,从而在团队中发挥一些作用。

1. 让开发人员得到成长。一方面,让真正懂业务、能力强的人参与代码检视中,另一方面,检视过程更关注业务的一致性、代码架构、代码的组织结构等问题,并形成统一的原则。对于发现的问题,检视人员给出代码怀味道的理由,共同讨论形成更合理的方案。在我们现在的代码检视活动中,我们常发现实现与需求要求不一致、方法职责不单一等问题,也检视出不少违反安全、可靠性、可维护性、性能等问题。我们针对这些问题,与开发人员一起分析讨论、总结出设计原则与方案。

2. 将代码质量提升形成可量化的数据。不少技术人员认为KPI无法反映出检视结果,亦或是认为KPI纯粹是为了迎合大佬,没有产生额外的收益。但是,技术方案的落地往往需要大佬们决策,没有量化的指标对于决策是困难的(你懂的)。我们团队将检视意见分为代码实现偏差、代码bug、安全漏洞、代码坏味道几类,分类统计后呈现给大佬们,并跟踪问题闭环。此外,我们将典型问题做成案例,定期在团队内外分享。最终让检视工作有序的落地。当然,对于某些大佬喜欢拿结果diss人的,统计结果要有一定的灰度。尽量让结果和案例对事不对人。

3. 以开放的心态检视代码,将代码检视当做是一种交流。面对面的提问我认为是最好的检视方式,远比直接评论更有效。每个人都可以提出自己的问题,而每个熟悉代码的人也都可以回答问题。我们常常的提问有:代码实现了什么功能,修改了哪些内容来支持这些功能;哪块代码是你自己认为写得不满意的,为什么觉得不满意;这个类/方法的功能是什么。在不断的问答中找出代码不合理的地方,最终形成一致性认识。无论在讨论中谁说服谁,大家都进行了思考、交流与碰撞,有碰撞就有提升。我认为这个非常关键。

基于上面的思考我们团队进行了具体的实践,并取得了不错的效果。具体实践敬请关注后面的文章《代码检视实践——如何进行高效的代码检视?》。

相关文章

  • 为什么代码检视总被忽视?

    我从事了近6年的Java开发,经历过几个人的团队,也参与过几百人的大项目。对于代码检视活动,我有幸地参与了很多很多...

  • HTML代码在线检视

    HTML代码检视 HTML代码在线检视网站规则配置如下: Standard Performance Accessi...

  • 质量保证

    门禁 代码检视

  • 谈谈代码检视(二)

    今天我们谈谈代码检视如何做,在代码检视的活动中,最少是两个人的交叉检视,亦或者是集体review(代码编写者讲解代...

  • 总被忽视的对象

    文|一本正经胡说八道的猫 由于公司安排,要求我司对接人员到合作公司每周学习交流。 合作公司一开始也懵懵的,贵司人员...

  • 走出“项目青蛙”的恐慌区

    2018.8.20-2018.8.26周检视/张立 【引言】为什么我的青蛙总完不成,原来那是项目,我每天吃不完的是...

  • 2018-05-22

    若总被忽视,又何必作贱了自己;若不被珍惜,又何必苦苦去维系。

  • 关键清单:集体代码回顾 v0.7.1

    本文是“ThoughtWorks敏捷实践关键清单”中的一个关键清单。 代码回顾,又名代码评审、代码检视、代码走查。...

  • iOS代码命名基础

    iOS 代码架构规范iOS 命名方法 代码命名基础 面向对象软件库设计中经常被忽视的一个方面是类,方法,函数,常量...

  • 程序的优化(PHP)

    有些小细节往往容易被人忽视。有时候常常说优化代码优化代码,但是实际操作的时候,最容易被忽视的如下所示: echo ...

网友评论

    本文标题:为什么代码检视总被忽视?

    本文链接:https://www.haomeiwen.com/subject/pziwjqtx.html