Dón*_*nal 45 language-agnostic oop static-methods
我想知道人们如何决定是否将方法定义为静态方法.我知道如果一个方法不需要访问实例字段,那么它只能被定义为静态.因此,假设我们有一个不访问实例字段的方法,您是否始终将此方法定义为静态,或者仅在您需要静态调用它时(不引用实例).
也许另一种问同一个问题的方法是你使用静态还是非静态作为默认值?
Tho*_*mas 47
我尽可能使用静态方法.好处:
Jon*_*nik 24
Kevin Bourrillion在不久前写了一篇关于这个主题的深刻答案(不可否认,从Java的角度来看,但我认为它也适用于其他语言).
他认为你基本上只应该使用静态方法来实现纯函数.
" 纯函数 "是任何不修改任何状态的方法,其结果仅取决于提供给它的参数.因此,例如,任何执行I/O(直接或间接)的函数都不是纯函数,但Math.sqrt()当然是.
我倾向于同意.(虽然在我自己的代码中,传统上,我可能在整个地方使用过多的静态辅助方法...... :-P这肯定使得使用这些方法的代码更难以测试.)