指南:如何写出易测试代码
作者:
Jonathan Wolter,Russ Ruffer,Miško Hevery
翻译:刘冬清 联系方式:
(liudongqing (at) Gmail) , 有效的测试者网站
在Google ,为了使我们的代码保持尽可能好的状态,我们不断把这些提醒提供给我们的软件工程师。现在,我们很高兴能把它们和大家分享。
非常感谢那些为了完成这个指南,给予灵感并长时间努力工作的人们:
- Jonathan Wolter
- Russ Ruffer
- Miško Hevery
同时感谢Blaine R Southam 将此文档转成 pdf 格式 。
预警信号
- 在构造函数或者成员变量定义中使用关键字new
- 在构造函数或者成员变量定义中调用静态方法
- 在构造函数中做为成员变量赋值以外的任何其它 事
- 在构造函数调用结束后,对象没有被完全初始化(警惕initialize方法)
- 在构造函数中使用流程控制语句(条件或循环)
- 代码在构造函数中创建复杂的对象图,而不是用factory或者builder
- 增加或使用了初始化代码块
预警信号
- 传入的对象从未被直接使用(只是借用来访问别的对象)
- 违反迪米特法则:使用多余一个点( . ),方法调用链跨越了对象图
- 可疑的命名: context , environment , principal , container , 或 manager
预警信号:
- 添加或使用单子
- 添加或使用静态成员或静态方法
- 添加或使用静态初始化代码段
- 添加或使用注册类
- 添加或使用服务定位类
预警信号
- 总结类做什么的时候用了“和”这个词
- 对团队新成员来说,读并迅速“了解”该类很困难
- 类中有只用于某些方法的成员变量
- 类中有只操作其参数的静态方法