devops:破窗效应与代码质量

简介

破窗效应是犯罪心理学的一个理论,指如果一个建筑,当出现小量破窗的时候,会诱发更多的人为破坏。如果一个建筑出现破窗的时候及时修复,会受到更少破坏。我们是否有这样的经历,当接手一个代码质量较差的项目,例如一个函数有上百行的代码,函数里有大量的 if else,如果让你增加一个功能,你更倾向于直接在目标函数上加入你的改动代码,而不是通读该方法,再进行封装修改呢。其实这样的修改方式,并没有错,也和个人能力没有关系,因为这种修改方式是最保险,最快捷的,他不但维持代码原有功能正常运行,还添加了新的功能。但是,这样的项目,就是典型的破窗效应,因为第一个人产生了破窗,没有及时修复,后面来的人,就会更大胆的破坏,最终项目没法维护。

一、如何避免

1、制定代码规范:尽量使用自动化工具实时检测,不要试图通过文档规范,文档一般都不会有人看的,前端集成 eslint 就最好了,vs code 可以安装相应插件实时提醒。另外,可以加入 git hook,对不符合规范对代码,拒绝进入代码仓库。

2、code review: 静态代码检测,只能检查语法问题,但是对于代码设计问题,需要 code review 进行纠正,code review 可以利用 gitlab 或者 github 的 pull request 模式,对需要合并到主分支的代码进行 review。

3、控制圈复杂度:代码好坏的一个重要标准是,函数的圈复杂度,如果一个函数有大量分支,会让人很难理解,所以控制圈复杂度可以有效提高代码质量,vs code 可以利用 CodeMetrics 这款插件实时检查。

4、控制代码重复率:《编写有效的单元测试》书中提到,重复的代码是造成代码 bug 提高很重要的因素,我们可以利用 SonarQube 对代码重复率进行扫描,删除重复代码或者对相近的代码进行封装。

5、自动化单元测试:很多人可能会觉得单元测试成本太高,为什么会产生这样的感觉呢,我觉得主要是大家把开发成本理解为开发功能所需要的时间,但是实际上,项目的成本,包含开发成本,维护成本,bug 处理成本,代码二次开发成本。开发成本也许只占项目成本的 10%,后面功能越是复杂,维护成本将会出现指数增长,前期不去控制复杂度,会给后期带来巨大的成本开销。

二、如何拯救

1、eslint 自动修复:还是上面说的代码规范,我们需要利用 eslint 进行老代码清理,使用 eslint –fix 命令,可以实行自动格式化。

2、质量仪表盘:如果你在一个团队工作,必须让大家形成共同目标,并能实时感知项目的状态,否则,你清理代码的速度远比不上创造坏代码的速度。SonarQube 是你的好帮手,你可以利用他的仪表盘功能,每天查看项目是否有新增坏代码。

3、重构你的核心模块:如果你要经常修改的模块又是核心模块,建议你对其进行重构,重构时,利用单元测试进行覆盖,保障代码质量,同时,团队成本要进行 review,防止把代码修改为你喜好的代码,而非大家能理解的代码。

4、使用率低的模块:对于使用率或者修改率较低的代码,就让他随风去把,时间会带走他的。

猜你喜欢

转载自blog.csdn.net/zhanggqianglovec/article/details/131501169
今日推荐