腾讯代码质量评估:15个代码异味暴露你的编程水平!
1 引子
我们经常说"这段代码很烂",但这到底是什么意思?我们又该如何应对?
在腾讯,我们从三个层级来评估代码的质量,它们分别是:模块(类)级,函数级和具体实现级。
下面,我们简单介绍其中的一部分内容(非完整版本)。
2 模块级异味
低内聚
模块/类中包含多个不相关的职责,违反单一职责原则(通过LCOM4度量)。
上帝类
包含大量代码行、众多函数以及至少一个复杂核心方法的庞大模块。
开发者拥堵(Developer Congestion)
多个开发者同时处理同一段代码时产生的瓶颈。
前任开发遗留的复杂代码
当负责低代码健康度热点区域的开发者离职后,维护风险显著增加。
3 函数级异味
上帝函数
集中了过多行为的复杂函数,成为局部热点。
违反DRY原则
可预见地要一起修改的重复逻辑。
复杂方法
过多的条件语句(如if、for、while)提高了函数圈复杂度,从而降低代码健康度。
基本类型偏执
过度使用内置基本类型而不进行封装。
过大方法
代码行数过多的函数难以理解。
4 实现异味
嵌套的复杂度
嵌套的 if 语句或循环增加缺陷风险。
崎岖之路(Bumpy Road)
“崎岖之路” 代码异味是指一个函数或方法内部包含多个逻辑块,导致阅读和维护时像“走在颠簸的路上一样不顺畅”,需要进一步拆分和封装。就像崎岖不平的道路会降低行车速度一样,代码中的 “崎岖之路” 会成为理解代码的障碍。
从根本上讲,代码中的 “崎岖之路” 代表着缺乏封装,这会成为理解代码的阻碍。更糟糕的是,在命令式语言中,还存在功能纠缠风险增加的问题,这往往会导致复杂的状态管理。
复杂条件
分支中包含多个逻辑运算符(AND/OR)的表达式使理解复杂化。
大型断言块
连续的断言语句表明缺少必要的抽象。
重复断言块
测试中复制粘贴的断言块表明违反了DRY原则。
5 结语
代码的质量不仅影响项目的可维护性和团队协作效率,更直接决定了软件的生命力。识别并及时修复各种“代码异味”,是每一位开发者迈向专业的必经之路。
希望本文的分享,能帮助你在日常开发中不断优化代码结构,提升工程质量,让团队协作更加顺畅,项目交付更加高效。
让我们一起用更高的标准要求自己,写出让自己和同事都满意的代码!