我是一名刚进入企业界的 Java 程序员。最近我使用 Groovy 和 Java 开发了一个应用程序。在我编写的所有代码中,都使用了大量的静态变量。高级技术人员要求我减少使用的静力学数量。我用谷歌搜索了同样的内容,我发现许多程序员相当反对使用静态变量。
我发现静态变量使用起来更方便。而且我认为它们也很有效(如果我错了请纠正我),因为如果我必须对一个类中的函数进行 10,000 次调用,我很乐意将方法设为静态并使用直接的 Class.methodCall()
在它上面而不是用 10,000 个类的实例使内存混乱,对吗?
此外,静态减少了代码其他部分的相互依赖性。他们可以充当完美的国家持有者。除此之外,我发现静态在某些语言中得到了广泛的实现,例如 Smalltalk 和 Scala 。那么,为什么这种对静态的反对在程序员中普遍存在(尤其是在 Java 世界中)?
PS:如果我对静力学的假设是错误的,请纠正我。
原文由 Vamsi Emani 发布,翻译遵循 CC BY-SA 4.0 许可协议
静态变量代表全局状态。这很难推理也很难测试:如果我创建一个对象的新实例,我可以在测试中推理它的新状态。如果我使用使用静态变量的代码,它可以处于任何状态——任何东西都可以修改它。
我可以继续讲很长一段时间,但要考虑的更大概念是,事物的范围越小,就越容易推理。我们擅长思考小事情,但如果没有模块化,就很难推断出百万行系统的状态。顺便说一句,这适用于各种各样的事情——不仅仅是静态变量。