我读过这本书Working effectivly with Legacy code
。
我理解在旧版代码中打破依赖关系的技术
但我想了解如何首次避免这些依赖:
1-关于静态方法:
我理解Introduce Instance Delegator
但这是否意味着我们应该完全避免使用静态方法?
(当它不仅仅是某段代码的宏时。
意味着它有一些真实的逻辑并且它的实例是独立的吗?)
2-全局变量
我理解Introduce Static Setter
,
但又一次 - 我们应该避开Singelton吗?
答案 0 :(得分:0)
传统上对单元测试领域中静态方法的批评是嘲弄它们的难点。我从未同意这一点作为避免静态方法的原因(并且期待那些不同意的人,并非每个人都有使用IOC容器的奢侈品。)
有些工具可以模拟静态类,例如JustMock。
另一个更肮脏的嘲弄单例的方法是让单例返回一个接口,并在使用私有访问或直接反射的单元测试期间模拟单例上的实例。