提升代码质量

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

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

相关文章
|
人工智能
cdr2023绿色版一键安装下载CorelRAW2023
CDR全称是CorelRAW2023,它不同于Photoshop,PS是一款图片处理软件,而CDR是一款较为常用的矢量绘图设计软件,该软件给设计师提供了矢量动画、页面设计、网站制作、位图编辑和网页动画等多种功能,使用的比较多的版本是2022版的和X8版,不过呢我这里都有呢~
9373 0
|
Docker 容器 文件存储
飞牛fnOS Docker镜像加速配置全攻略
本文介绍了如何在飞牛fnOS中配置Docker镜像加速服务,通过设置轩辕镜像仓库加速器,提升镜像拉取速度与稳定性。内容涵盖配置前准备、加速源设置、首选加速源调整及使用指南,帮助用户高效完成镜像操作。
8313 56
|
9月前
|
SQL 分布式计算 DataWorks
【跨国数仓迁移最佳实践7】基于 MaxCompute 多租的大数据平台架构
本系列文章将围绕东南亚头部科技集团的真实迁移历程展开,逐步拆解 BigQuery 迁移至 MaxCompute 过程中的关键挑战与技术创新。本篇为第七篇,基于MaxCompute 多租的大数据平台架构。 注:客户背景为东南亚头部科技集团,文中用 GoTerra 表示。
617 27
|
12月前
|
Java 应用服务中间件 开发者
Spring Boot 技术详解与应用实践
本文档旨在全面介绍 Spring Boot 这一广泛应用于现代企业级应用开发的框架。内容将涵盖 Spring Boot 的核心概念、核心特性、项目自动生成与结构解析、基础功能实现(如 RESTful API、数据访问)、配置管理以及最终的构建与部署。通过本文档,读者将能够理解 Spring Boot 如何简化 Spring 应用的初始搭建和开发过程,并掌握其基本使用方法。
818 2
|
虚拟化 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 网卡特殊定制版
425 0
|
存储 弹性计算 监控
阿里云国际代理商购买无忧指南:如何省20%成本享专业服务
企业上云虽是数字化转型的必然选择,但高昂成本常让管理者犹豫。通过阿里云国际授权代理商采购,可享最高20%价格优惠及专业支持。文章解析代理商渠道价值、新用户购买指南、采购注意事项及长期成本管理策略,助企业通过正规渠道实现“购买无忧”,享受全生命周期技术支持与价格红利。选对合作伙伴,为未来竞争力投资。
708 2
|
存储 调度 iOS开发
macOS Ventura 13.7.5 (22H527) 正式版 ISO、IPSW、PKG 下载
macOS Ventura 13.7.5 (22H527) 正式版 ISO、IPSW、PKG 下载
691 2
macOS Ventura 13.7.5 (22H527) 正式版 ISO、IPSW、PKG 下载
|
机器学习/深度学习 人工智能 安全
AI 绘画Stable Diffusion 研究(三)sd模型种类介绍及安装使用详解(1)
AI 绘画Stable Diffusion 研究(三)sd模型种类介绍及安装使用详解
3886 0
|
机器学习/深度学习 搜索推荐 数据挖掘
DocEE:一种用于文档级事件抽取的大规模细粒度基准 论文解读
事件抽取旨在识别一个事件,然后抽取参与该事件的论元。尽管在句子级事件抽取方面取得了巨大的成功,但事件更自然地以文档的形式呈现,事件论元分散在多个句子中。
706 0