想要做好代码质量,如何破局?
作者:苗现方
想要做好代码质量,我们不得不提什么是代码质量?本文中讨论的代码质量一般是指代码的风格、重复率和复杂度等,代码是技术团队的价值产物,是宝贵的财富,同样代码质量的好坏可以直接体现出团队的重视程度和技术管理水平。
代码质量的下降是内在原因,通常会恶性循环,主要表现出以下两个特性:
感染性:坏代码总能在部门渲染着只要业务交付达成,代码质量不重要的负面气氛,严重减低了研发人员的技术热情,破坏工作氛围,导致更多的坏代码出现。
心理暗示性:在坏代码基础上继续生产坏代码的"罪过"减轻。
为什么会产生这样的结果,这里我与你举个生活中的栗子,我在上个周日收拾房间,发现一个房间衣柜中的衣服很乱,花了很长时间才叠放好,过两天晚上下班回家,我发现客厅沙发上也很乱,衣服、电脑、背包、零食几乎日常的小物件都会有,两件事情合在一起想,这确实是一个很有趣的思考,为什么会是这样的?在一个相对封闭的空间中,任其无意识地随着时间的发展,房间和沙发也一定很乱,注意,这里我说的是无意识,也就是我并没有刻意放,或者去刻意整理。带着这个思考的结果,我又观察了大家的工位、园区内景观,一段时间内一定会出现乱象,不过通过一顿治理之后很快恢复到有秩序,好,大家可以猜到这是什么定律,就是熵增定律,不了解的可以自行网络科普,那么在质量域中依然存在这样的定律,不然熵增定律也不会被古今中外的物理学家所推崇备至,它的定义是:在一个孤立系统里,如果没有外力做功,其总混乱度(即熵)会不断增大。
代码质量在软件项目是一种有序的状态,自然总是向着无序发展的,要想保持这种有序,需要主动投入资源,就像整理房间,花草修剪一样。
回到我们的多数开发工作中,我们面临的现状是这样的:
1、业务交付压力大,需求优先上线,业务逻辑实现优先级最高,没时间没精力关注代码质量,甚至终极目标就是需求上线,导致坏代码产生,开发效率逐步下降,随着后续版本的迭代,业务交付压力越来越大。
2、出现了1的情况后,我们意识到压力越来越大,为了应付这种交付压力,常见的手段就是增加人力,但是一味的增加人数,沟通成本及风格的一致性无法得到保障,这将进一步产生更多的坏代码。
针对以上2个现状,我们该怎么着手解决。
我的建议方案是多渠道,系统性解决问题,首先控制人力的大量投入,主动发起对代码质量进行管控,其次持续提升技术升级。但是,从减轻业务交付压力的结果来看,人们往往倾向于增加人力来快速解决问题,技术升级需要靠长期的投入才能有所收获,所以,我们需要在质量方面增加强有力的管控。
如果做好代码质量管控?
代码质量管控首先应解决两个问题,库存坏代码和增量坏代码。
想解决这两个问题,我们要对现有的系统、人员、工具、流程整合形成一套体系化的方案。
对代码质量管控,通过在部门内工程实践,我认为需要经历以下这四个过程,部门内建立代码规范制度(EOS)、检查代码问题的自动化工具(bamboo平台)、代码质量检查与代码流动过程绑定(质量门禁)、部门视角下,集中管理代码规范和质量状况的透明(代码质量评测系统)。
过程一:代码质量的基础是规范,包括代码风格的规范、长期一线代码实践规范、与业务需求相关的特殊规范,例如风控文案、异常托底文案等。
过程二:实现自动化的检查能力是在规范基础之上,通过自动化工具进行检查,包括对代码重复率、圈复杂度、单测case通过率、静态规则扫描等。
过程三:实现质量检查与代码流动过程绑定,在编辑-构建-提交-发布各个时段部署检查能力保障上线代码必须经过机器和人工的多环节检查。
过程四:团队规模逐步扩大,各业务线项目快速发展,实现规范管理统一、项目要求一致、各项目质量状况透明、对比,建立统一的评测体系。
为了让你有一个很直观的认识,我在下面画了一个张图,希望可以帮助快速理解。
总结:
在日常开发工作中,大家都会想到通过增加人手来缓解项目交付的压力,这是可以理解,但是从整体角度看,人员的增加会产生越来越多的坏代码,使整体的效率下降,这又进而加剧了后续项目交付的压力,在这种压力下,又通过增加人手缓解......让代码质量变的越来越差,这也是房间为什么会越来越乱,是熵增定律在软件质量域的生动体现。
为了抑制这种恶性循环,我们意识到了通过有效的手段和资源投入进行各项工程实践,逐步完善代码质量的管控体系,积累很多方法和工具。
目前,我也在积极探索对统一代码质量评测体系的实践,希望逐步建立一套中心化的代码质量评测系统,在这个系统中让工匠精神、专家文化借住平台进一步传播、让系统的质量更加透明。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
「案例分享」研发效能提升之第一性原理
作者:樊思国 一、引言 被埃隆·马斯克多次提及的第一性原理First principle thinking,是计算物理学领域的一个专业术语,在商业领域依然具有鲜活的生命力。读过《硅谷钢铁侠》这本书的知道,正是因为应用了第一性原理对问题进行分析,才使得马斯克在跨航天、汽车、能源和软件领域创新硕果累累,比如SpaceX的成功,就是从根本上找到运载火箭的成本重头在推进系统上并解决该问题,从而创造了可回收利用的火箭推进器,从根本上解决成本问题,对行业来说是颠覆性的创新模式。 第一性原理的本义是指在进行计算的时候除了告诉程序你所使用的原子和他们的位置外,没有其它的实验的,经验的或者半经验的参量,且具有很好的移植性。通俗理解,第一性原理就是基于客观事实进行的推导,其中不加入自己猜测和类比等经验性的东西。 在创新和研发效能提升的行业大背景下,作者认为在我们的日常研发工作中,也可以利用第一性原理思维帮助我们提升效能甚至是提升创新能力。比如,线上问题排查和分析解决,就可以很好的利用第一性原理指导我们实践。 下文将通过一个真实的线上问题排查经历,提炼出一种利用第一性原理进行问题排查和解决的通用流程框架,...
- 下一篇
异常检测算法分类总结(含常用开源数据集)
作者:云智慧算法工程师 Chris Hu 异常检测是识别与正常数据不同的数据,与预期行为差异大的数据。本文详细介绍了异常检测的应用领域以及总结梳理了异常检测的算法模型分类。文章最后更是介绍了常用的异常算法数据集。 异常的概念与类型 目前异常检测主要是基于Hawkins对异常的定义:(Hawkins defines an outlier as an observation that deviates so significantly from other observations as to arouse suspicion that it was generated by a different mechanism.)。异常(anomaly/outlier)指的是远离其他观测数据而疑为不同机制产生的观测数据。根据概率理论对异常的形式化定义如下: 异常主要分为以下三种类型: point anomalies(点异常) 点异常是单个异常数据点 ,将数据集中每个数据映射到高维空间中,其中孤立的点被称为点异常。这种异常点与其他数据点具有明显差异,这种异常分类是异常数据中最为简单的一种,也是异常检...
相关文章
文章评论
共有0条评论来说两句吧...