【文档翻译】指南:编写可测试代码(总纲)

为代码编写测试代码是每个软件工程师的美德。

前言

很多程序员都有写的代码难以测试的痛苦,这其实说明了代码某些设计的不合理。谷歌的实践中很早就发现了某些代码中不好的设计,正是这些设计阻碍了测试代码的编写。

正文

为了使谷歌代码保持最佳状态,我们为软件工程师提供以下常规提醒。现在我们很高兴地与全世界分享。

感谢以下人员的灵感和辛勤工作,使这个指南成为可能:

同时感谢 Blaine R Southam 制作了 pdf 书籍

缺陷 1:构造函数做了实际工作

危险信号

以下是构造函数或字段声明中可能出现的警告信号:

  • 构造函数中出现 new 关键字
  • 构造函数调用静态方法
  • 构造函数中出现除了字段初始化之外的任何操作
  • 构造函数未能降对象未完全初始化(请注意初始化方法)
  • 构造函数中出现控制流程(例如条件或循环逻辑)
  • 构造函数中构建复杂对象,而不是使用工厂或构建器
  • 添加或使用初始化块

缺陷 2:挖掘合作者类

危险信号

  • 传递了对象,但从未直接使用(仅用于访问其他对象)
  • 违反了德米特定律:方法调用链在一个带有多个点(.)的对象图中移动
  • 可疑的名称:上下文、环境、主体、容器或管理器

缺陷 3:脆弱的全局状态和单例

危险信号

  • 添加或使用单例模式
  • 添加或使用静态字段或静态方法
  • 添加或使用静态初始化块
  • 添加或使用注册表
  • 添加或使用服务定位器

缺陷 4:类做的太多

危险信号

  • 总结类的职责中包含”和”这个关键字
  • 对于团队的新成员来说,阅读和掌握一个类成为挑战
  • 类具有仅在某些方法中使用的字段
  • 类具有仅对参数进行操作的静态方法

参考资料

《Guide: Writing Testable Code》– misko.hevery 著

【文档翻译】指南:编写可测试代码(总纲)

https://blog.dadilive.top/20230224/fdb50f70.html

发布于

2023-02-24

更新于

2025-07-07

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×