除了测试之外,为什么静态方法很糟糕

时间:2014-08-31 11:00:22

标签: unit-testing static

很多时候我听说" Singleton是一种不好的做法,静态方法是不好的做法"所有我能看到的理由是#34;难以测试"。

但我确实认为,如果可以在不实例化类的情况下完成操作,那么它的确非常好。

编辑:只是因为测试,任何人都可以发现"私人方法也很糟糕,他们无法测试"例如

2 个答案:

答案 0 :(得分:6)

这是一个关于语义和expressing intent的问题。

静态方法本身并不坏,除了它很难测试。糟糕的部分是通过使用静态方法来混淆其他程序员,以避免创建新实例。

如果该方法涉及本身而不涉及单个实例(例如,像工厂方法),则无论如何都要使用静态方法。但是,如果该方法在语义上属于单个实例,则使用非静态方法。

答案 1 :(得分:2)

除了测试问题之外,静态方法通常不赞成与全局变量相同的原因:

  • 静态方法与特定的类实例无关,因此并不总是线程安全的。
  • 具有大量静力学方法的系统通常无法很好地扩展。
  • 由于调用类的静态方法和类的实例成员之间的混合而导致的混淆可能导致维护问题。