提升代码质量

简介: 好的代码应易读、易改、易维护,写单测即是“吃自己狗粮”,从用户视角检验代码。高单测覆盖率的项目更原子化、边界清晰,利于迭代与重构。低圈复杂度意味着逻辑简洁、易于测试,而缺乏单测的复杂代码则难以维护。写单测促使开发者优化设计,降低认知负担,提升整体代码质量。(238字)

代码是写给⼈看的,好的代码应该是易读、易改、易维护的。写单测的过程其实就是吃⾃⼰代码狗粮(dogfood)的过程,从⽤户/研发视⻆去使⽤⾃⼰的代码,帮助我们提升代码质量。
● 好的代码是易测的:业界很早就提出了圈复杂度(Cyclomatic complexity)的概念,⽤来衡量⼀个模块判定结构的复杂程度,其数量上表现为独⽴路径的条数,也可理解为覆盖所有的可能情况最少使⽤的测试⽤例个数。圈复杂度⼤说明程序代码的判断逻辑复杂,可能质量低,且难于测试和维护。因此好的代码⼀定是圈复杂度低的,也是易于测试的。
● 易于迭代演进:没有什么软件是⼀成不变的,好的软件系统应该是易于演进的。单测覆盖⾼的项⽬模块更原⼦化,边界更清晰,修改起来更容易。单测覆盖更全的项⽬重构的⻛险也相对更⼩,相反⼀个没有单测覆盖的复杂项⽬是没⼈敢碰的。
● 更优质的设计:前⾯也提到,好的单测能够提升代码的质量。如果⼀个研发需要给⾃⼰的代码写单测,他就会注重代码的模块化分割,减少过⻓、圈复杂度过⾼的method。下⾯的例⼦就是⼀段没有单测的代码的认知复杂度值(可以理解是圈复杂度的⼀个改良版,从代码是否容易理解的⻆度衡量),超标了⾜⾜三倍。现在回过头来想补单测,脑袋都⼤。

相关文章
|
人工智能
cdr2023绿色版一键安装下载CorelRAW2023
CDR全称是CorelRAW2023,它不同于Photoshop,PS是一款图片处理软件,而CDR是一款较为常用的矢量绘图设计软件,该软件给设计师提供了矢量动画、页面设计、网站制作、位图编辑和网页动画等多种功能,使用的比较多的版本是2022版的和X8版,不过呢我这里都有呢~
6457 0
|
18天前
|
API 语音技术 Python
一条命令跑起实时同传:Qwen3.5 LiveTranslate 浏览器 Demo 开源了
通义千问Qwen3.5 LiveTranslate浏览器端开源Demo,30秒体验超低延迟(2.5s首字)实时同传:支持60语种识别、29语种音色克隆语音输出、热词增强、视觉消歧,开箱即用。含完整WebSocket协议实现,助力快速集成。
600 2
|
7月前
|
SQL 分布式计算 DataWorks
【跨国数仓迁移最佳实践7】基于 MaxCompute 多租的大数据平台架构
本系列文章将围绕东南亚头部科技集团的真实迁移历程展开,逐步拆解 BigQuery 迁移至 MaxCompute 过程中的关键挑战与技术创新。本篇为第七篇,基于MaxCompute 多租的大数据平台架构。 注:客户背景为东南亚头部科技集团,文中用 GoTerra 表示。
537 27
|
Docker 容器 文件存储
飞牛fnOS Docker镜像加速配置全攻略
本文介绍了如何在飞牛fnOS中配置Docker镜像加速服务,通过设置轩辕镜像仓库加速器,提升镜像拉取速度与稳定性。内容涵盖配置前准备、加速源设置、首选加速源调整及使用指南,帮助用户高效完成镜像操作。
7976 56
|
虚拟化 iOS开发 MacOS
VMware ESXi 8.0U3g macOS Unlocker & OEM BIOS 2.7 Marvell AQC 网卡特殊定制版
VMware ESXi 8.0U3g macOS Unlocker & OEM BIOS 2.7 Marvell AQC 网卡特殊定制版
298 0
|
存储 弹性计算 监控
阿里云国际代理商购买无忧指南:如何省20%成本享专业服务
企业上云虽是数字化转型的必然选择,但高昂成本常让管理者犹豫。通过阿里云国际授权代理商采购,可享最高20%价格优惠及专业支持。文章解析代理商渠道价值、新用户购买指南、采购注意事项及长期成本管理策略,助企业通过正规渠道实现“购买无忧”,享受全生命周期技术支持与价格红利。选对合作伙伴,为未来竞争力投资。
575 2
|
存储 调度 iOS开发
macOS Ventura 13.7.5 (22H527) 正式版 ISO、IPSW、PKG 下载
macOS Ventura 13.7.5 (22H527) 正式版 ISO、IPSW、PKG 下载
583 2
macOS Ventura 13.7.5 (22H527) 正式版 ISO、IPSW、PKG 下载
|
机器学习/深度学习 人工智能 安全
AI 绘画Stable Diffusion 研究(三)sd模型种类介绍及安装使用详解(1)
AI 绘画Stable Diffusion 研究(三)sd模型种类介绍及安装使用详解
3773 0
|
JavaScript Java 关系型数据库
美妆商城系统 SpringBoot + Vue 【毕业设计 资料 + 源码】
这篇文章介绍了一个使用SpringBoot + Vue + Mybatis + Mysql技术栈开发的美妆商城系统,包括系统功能划分、部分页面截图和前后端源码示例,并提供了GitHub上的源码链接。
美妆商城系统 SpringBoot + Vue 【毕业设计 资料 + 源码】