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