何时启用单元测试
关于丑陋代码
工作中经常看到很多丑陋的代码,或者,自己写的代码过一段时间之后自己也觉得很丑陋,促使你不断的去重构。
那么,这些丑陋的代码是什么时候编写的呢?它们到底存在多久了呢?
大多数情况下,这些丑陋代码已经存在有些年头了。即使是你一手支撑的产品或项目,经过几个版本的迭代之后,1-2年也过去了。
在这些看起来丑陋的代码中,很多没有进行单元测试,可测试性不高,或者根本不可测。或者它们也有可能是 TDD 实践后的产物,有着不错的单元测试覆盖,但依旧是丑陋的代码。
但经过漫长的生命周期后,它们存活了下来,并且至今仍发挥着效力。因为,这些丑陋代码所实现的业务逻辑是有效和有用的,而业务逻辑所描述的产品还仍然很有生命力。
所以,丑陋代码有其存活的理由。只是,这些丑陋的代码增加了维护的难度,你需要不断的偿还这些技术债务,甚至一直拖欠着。
何时单元测试
在新的项目中,我通常不会直接编写单元测试代码,直到:
- 当我知道如何构建我正在尝试构建的系统时
- 当我知道我们的客户是真正的需要我们所要构建的系统时
- 当我知道我所写的代码将存活一个月以上时
直到此时,我才能明确的表达所构建系统的原型,并且通常其已经不再是一个将被抛弃的原型。
难道这就意味着我有权说我可以不写单元测试吗?是的。
因为在此之前,我们一直在不断的等待各方反馈,以确认我们正在做着正确的事情。而一旦我们已确认所做的事情是正确的,那么就可以启动自动化测试了。
单元测试的作用
- 帮助理解需求
- 对设计的快速反馈
- 提高实现质量
- 测试成本低
- 利于重构
- 文档作用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?