持续交付2.0

腾讯代码质量评估:15个代码异味暴露你的编程水平!

关注我,每天收获一个新技能!
关注我,每天收获一个新技能!

1
引子

我们经常说"这段代码很烂",但这到底是什么意思?我们又该如何应对?

在腾讯,我们从三个层级来评估代码的质量,它们分别是:模块(类)级,函数级和具体实现级。

下面,我们简单介绍其中的一部分内容(非完整版本)。

2
模块级异味

低内聚

模块/类中包含多个不相关的职责,违反单一职责原则(通过LCOM4度量)。

上帝类

包含大量代码行、众多函数以及至少一个复杂核心方法的庞大模块。

开发者拥堵(Developer Congestion)

多个开发者同时处理同一段代码时产生的瓶颈。

前任开发遗留的复杂代码

当负责低代码健康度热点区域的开发者离职后,维护风险显著增加。

3
函数级异味

上帝函数

集中了过多行为的复杂函数,成为局部热点。

违反DRY原则

可预见地要一起修改的重复逻辑。

复杂方法

过多的条件语句(如if、for、while)提高了函数圈复杂度,从而降低代码健康度。

基本类型偏执

过度使用内置基本类型而不进行封装。

过大方法

代码行数过多的函数难以理解。

4
实现异味

嵌套的复杂度

嵌套的 if 语句或循环增加缺陷风险。

崎岖之路(Bumpy Road)

“崎岖之路” 代码异味是指一个函数或方法内部包含多个逻辑块,导致阅读和维护时像“走在颠簸的路上一样不顺畅”,需要进一步拆分和封装。就像崎岖不平的道路会降低行车速度一样,代码中的 “崎岖之路” 会成为理解代码的障碍。

从根本上讲,代码中的 “崎岖之路” 代表着缺乏封装,这会成为理解代码的阻碍。更糟糕的是,在命令式语言中,还存在功能纠缠风险增加的问题,这往往会导致复杂的状态管理。

复杂条件

分支中包含多个逻辑运算符(AND/OR)的表达式使理解复杂化。

大型断言块

连续的断言语句表明缺少必要的抽象。

重复断言块

测试中复制粘贴的断言块表明违反了DRY原则。

5
结语

代码的质量不仅影响项目的可维护性和团队协作效率,更直接决定了软件的生命力。识别并及时修复各种“代码异味”,是每一位开发者迈向专业的必经之路。

希望本文的分享,能帮助你在日常开发中不断优化代码结构,提升工程质量,让团队协作更加顺畅,项目交付更加高效。

让我们一起用更高的标准要求自己,写出让自己和同事都满意的代码!