什么时候应该使用公共静态方法

Nix*_*Nix 5 language-agnostic public-method

有很多人反对使用"公共/私人"静态方法.我一直在寻找,没有运气,并试图找到任何倡导善用静态方法的人.

假设方法始终是Cohesive,哪些是可接受的使用公共静态方法的区域?这些方法在Java和.NET之间是否有所不同(又称它在一个中更容易被接受)?

最近这篇SO帖子引发了我对这个话题的愤怒/兴趣.

kbr*_*ton 5

如果该方法可以被视为一个单元,则使用公共静态方法,并且可以自己进行有效测试.在使用静态方法的类型上实现依赖注入或模拟很难.

我将静态方法用于具有很少/没有依赖性的实用程序方法,以及定义良好的输入/输出.


Mic*_*rdt 4

静态方法通常不应该

  • 访问其参数之外的任何状态(因为这会导致难以更改的耦合)
  • 修改它的参数(因为如果是的话,为什么它不是该参数的实例方法?)

相反,纯函数(即无副作用)适合良好的静态方法。

当然,这不应该被视为绝对的教条。