【文档翻译】指南:编写可测试代码(总纲)
为代码编写测试代码是每个软件工程师的美德。
前言
很多程序员都有写的代码难以测试的痛苦,这其实说明了代码某些设计的不合理。谷歌的实践中很早就发现了某些代码中不好的设计,正是这些设计阻碍了测试代码的编写。
正文
为了使谷歌代码保持最佳状态,我们为软件工程师提供以下常规提醒。现在我们很高兴地与全世界分享。
感谢以下人员的灵感和辛勤工作,使这个指南成为可能:
同时感谢 Blaine R Southam 制作了 pdf 书籍。
缺陷 1:构造函数做了实际工作
危险信号
以下是构造函数或字段声明中可能出现的警告信号:
- 构造函数中出现 new 关键字
- 构造函数调用静态方法
- 构造函数中出现除了字段初始化之外的任何操作
- 构造函数未能降对象未完全初始化(请注意初始化方法)
- 构造函数中出现控制流程(例如条件或循环逻辑)
- 构造函数中构建复杂对象,而不是使用工厂或构建器
- 添加或使用初始化块
缺陷 2:挖掘合作者类
危险信号
- 传递了对象,但从未直接使用(仅用于访问其他对象)
- 违反了德米特定律:方法调用链在一个带有多个点(.)的对象图中移动
- 可疑的名称:上下文、环境、主体、容器或管理器
缺陷 3:脆弱的全局状态和单例
危险信号
- 添加或使用单例模式
- 添加或使用静态字段或静态方法
- 添加或使用静态初始化块
- 添加或使用注册表
- 添加或使用服务定位器
缺陷 4:类做的太多
危险信号
- 总结类的职责中包含”和”这个关键字
- 对于团队的新成员来说,阅读和掌握一个类成为挑战
- 类具有仅在某些方法中使用的字段
- 类具有仅对参数进行操作的静态方法
参考资料
【文档翻译】指南:编写可测试代码(总纲)