代码质量管控的四个阶段

前言: 

       质量、功能和进度,是一个软件项目的三根支柱,但在现实项目中,当质量和其它两项产生冲突时,往往是作为被牺牲的对象。团队对于质量的态度主要停留在口头重视上,似乎还没有上升到团队意识的高度,也缺乏必要的保障手段。但没有质量的功能,从它面世第一天就开始永无止境的修补,并最终走向被重写的命运;没有质量的进度,只能是一个虚伪的承诺,因为接踵而至的,是一轮又一轮的附加开销,有效进度被大大拖延。要想提升代码质量,首先需要确立质量意识

        本文讨论的代码质量指的是代码本身的质量,包括复杂度、重复率、代码风格等要素。代码是团队的共同财产,代码质量是团队技术水平和管理水平的直接体现。代码质量下降通常会自成因果,导致恶性循环:

  • 破窗效应:在烂代码上继续生产烂代码的心理负担小很多
  • 传染性:烂代码传递着一种不在意质量,只看业务成果的负面信息,会伤害团队的技术热情和工作氛围,导致更多烂代码出现

本文会分析代码质量下降的内在机制,并分享在代码质量管控方面的一些实践经验。

一、熵增定律与代码质量

熵增定律告诉我们,一个封闭系统总是趋向于熵增,也就是系统的无序程度只会不断增加。

         对于软件项目来说,代码质量代表着系统的有序程度,烂代码增加就是系统无序性上升的体现,在无外力影响的情况下,烂代码只会原来越多。

        为了维持系统有序,需要外界向系统不断输入能量。对于代码质量,我们需要主动投入资源,来有意识地抑制烂代码越来越多的自然趋势。

二、经典循环

        烂代码产生的常见原因是业务压力大,导致没有时间或意愿讲究代码质量。但是向业务压力妥协而生产烂代码之后,开发效率会随之下降,导致业务压力更大,形成一种典型的恶性循环。

        为了应对业务压力,常见的做法就是向项目中增加人力,但是单纯地增加人力的话,会因为风格不一致、沟通成本上升等原因导致烂代码更多。

        要遏制这种恶性循环,需要多管齐下,主动对代码质量进行管控,并且持续进行技术升级,系统性地解决问题。

        不过质量管控和技术升级需要长期投入才能产生效果。通常情况下人们还是倾向于通过增加人力快速地解决业务压力的问题,而忽略了对于代码质量的负面影响,导致代码质量越来越差。

三、四个阶段

我把代码质量管控通常需要经历的四个阶段,称之为“四个现代化”:

  • 规范化 - 建立代码规范与Code Review制度
  • 自动化 - 使用工具自动检查代码质量
  • 流程化 - 将代码质量检查与代码流动过程绑定
  • 中心化 - 以团队整体为视角,集中管理代码规范,并实现质量状况透明化

阶段一:规范化

        保障代码质量的基础是建立团队的代码规范,通常包括:

  • 风格规范 - 缩进、换行、大小写等风格问题
  • 实践规范 - 规避一些常见的隐患,或者针对特定问题的最佳实践
  • 业务规范 - 与业务有关的特殊要求,比如文案中的关键词

        团队的代码规范通常以文档的形式存在,供新人们学习。但文档这种形式常见的情况就是新人看过之后就不再回顾了,也很难对实际写代码形成真正的约束。

        在规范的基础上,要通过 code review 将规范落地。code review 中大家可以对代码质量问题进行交流,并且相互监督,形成团队重视代码的习惯。

阶段二:自动化

自动化是指在代码规范的基础上,使用自动化工具进行质量检查,通常包括:

  • 代码规范检查 - 包括风格规范、实践规范、业务规范
  • 重复率 - 重复出现的代码区块占比,通常要求在5%以下
  • 复杂度 - 总行数,模块大小,循环复杂度等
  • 检查覆盖度 - 经过检查的行数占代码库总行数的比例

自动化质量检查可以覆盖多数常见问题,能够提升开发效率,也可以降低人工 code review 的成本。

         自动化检查工具的规则集与代码规范直接对应。通过编辑器插件,在写代码的时候直接给出检查结果。到这个阶段,团队的代码规范文档已经不再需要陈述各种细节,开发者可以直接通过查看自动化工具的规则集来了解代码规范。

阶段三:流程化

        流程化的意思是将自动化代码质量检查和 code review 与代码流动的过程绑定,从而保证所有上线的代码都经过机器与人工多个环节的检查。代码流动过程:

执行自动化代码质量检查的时机:

  • 编辑时 - 使用编辑器插件,实时运行质量检查
  • 构建时 - 在本地或者开发机的构建脚本中运行质量检查
  • 提交时 - 利用Git Hooks,提交代码或者生成Pull Request时运行质量检查
  • 发布时 - 在发布脚本中再做一次质量检查,通常与自动化测试放在一起

质量检查与代码流动绑定后的效果:

阶段四:中心化

当团队规模越来越大,项目越来越多时,代码质量管控就会面临以下问题:

  • 不同项目使用的代码规范不一样
  • 部分项目由于放松要求,没有接入质量检查,或者存在大量未修复的缺陷
  • 无法从团队整体层面上体现各个项目的质量状况对比

为了应对以上问题,需要建设中心化的代码质量管控体系,要点包括:

  • 代码规范统一管理。使用Git或者NPM包管理自动化代码质量检查的规则集,自动安装,不在本地写规则。一个团队、一类项目、一套规则。
  • 使用统一的持续集成服务。质量检查不通过的项目不能上线。
  • 建立代码质量评分制度。让项目与项目之间能够横向对比,项目自身能够纵向对比,并且进行汇总反馈。

 

总结

        在面临业务压力时,人们通常会倾向于通过增加人力来缓解业务压力。但从系统整体的角度来看,人力增加会造成代码质量变差,开发效率下降,从而再度增大业务压力。这种代码质量越来越差的循环,是熵增定律在软件工程领域的生动体现。

        为了抑制这种循环,我们需要有意识地投入资源来建设代码质量的管控体系。这个过程分为四个阶段:规范化,自动化,流程化,中心化。每个阶段都有不同关注的要点。

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Java代码质量管理制度是针对Java程序开发和维护过程中的代码质量进行管理和制的一套制度。一个好的Java代码质量管理制度可以帮助团队规范开发流程,提高代码的可维护性和可重用性,减少错误和缺陷,提高软件的稳定性和性能,以此来提高整个团队的工作效率和产品质量。 Java代码质量管理制度的实施需要从以下几个方面考虑: 1. 编码规范要求:团队可以根据项目的需求和编码规范要求制定相应的Java编码规范集,制定合适的文件、命名约定,前置条件、后置条件等。 2. 代码评审制度:团队中的开发人员需要对代码进行评审,来确保代码质量符合要求。评审包括有代码格式、规范性、异常处理、性能优化等方面的评审。 3. 性能测试:性能测试是Java代码质量管理制度的重要组成部分。性能测试可以在代码开发周期中逐步进行,以确保项目期间的性能要求得到满足。 4. 测试环节设定:团队要制定测试计划,对代码进行全面的验证,确保代码和项目能够情况的符合测试要求,以便进行相应的调整和完善。 5. 安全问题:团队制定安全管理方案,针对不同的安全风险进行相应防措施采用。 总之,Java代码质量管理制度的制定要根据项目的实际情况,各个方面都要有所体现,确保程序的可维护性、可扩展性、可读性和性能等方面都能够得到充分保障,以便保障项目的正常运行和业务需求的保障。 ### 回答2: Java代码质量管理制度是指遵循编程规范、模块化设计和测试方法,确保Java程序具有高质量和易于维护性的一系列措施。这个制度旨在提高软件开发的效率和稳定性,减少开发过程中出现的错误和缺陷,通过代码审查和质量管理工具,确保Java代码符合最佳实践和行业标准。 Java代码质量管理制度包括以下几个步骤: 1.订立代码规范:制定一套Java编程规范,如命名规范、缩进、注释等内容,以确保代码风格统一并且易于理解和修改。 2.模块化设计:将Java程序分解成多个模块,并且每个模块都有明确的职责和接口。这样能够减少代码之间的耦合,使程序更易于扩展和修改。 3.使用测试工具:使用JUnit和其他测试工具来确保Java代码的正确性和可靠性。测试用例要覆盖程序的各种情况,确保能够快速发现和修复问题。 4.代码审查:通过严格的代码审查机制,确保Java代码质量得到有效的监和改进。对于潜在的问题和可能的改进点进行讨论,并记录在开发规划中。 总之,Java代码质量管理制度是保证软件质量的必要举措之一。它可以让开发人员始终保持在高效和高质中,从而保障Java应用程序质量和稳定性的水平。 ### 回答3: Java代码质量管理制度是一个组织内部建立、执行和维护的一系列流程、标准和工具,旨在提高Java代码质量和开发效率。这些流程、标准和工具可以涉及代码编写、代码审查、代码测试、代码修复等各个方面。具体来说,Java代码质量管理制度包括以下几个方面: 第一,代码编写规范。制定一套Java代码编写规范,让所有开发者在编写Java代码时都能够遵循这个规范,以保证代码的统一性和可维护性。 第二,代码审查流程。在代码编写完成后,需要进行代码审查,以保证代码质量。建立一套代码审查流程,明确谁来审查、如何审查、审查的标准是什么等,以确保每个代码提交都经过了严格的审核。 第三,测试环节。测试是Java代码质量管理不可或缺的一部分。管理者需要确保测试环节充分、全面,覆盖功能测试、性能测试、安全测试等各个方面。 第四,代码修复和重构。一旦发现问题,就要及时修复,尽可能不影响后续的开发进程。同时,对于一些存在问题的代码,也需要进行重构和优化,以提高代码的可维护性和性能。 第五,使用工具。Java代码质量管理中,使用一些工具可以提高代码质量和开发效率。例如,使用代码静态分析工具可以在编码阶段发现潜在问题,使用版本制工具可以管理代码的版本和修复历史等信息。 综上所述,Java代码质量管理制度可以提高代码质量和开发效率,帮助组织更好地管理Java代码开发过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值