一尘不染

Java-为什么静态变量被认为是邪恶的?

java

我是一位Java程序员,对公司领域来说是新手。最近,我已经使用Groovy和Java 开发了一个应用程序。我编写的所有代码都使用了大量的静态变量。高级技术人员要求我减少使用的静电数量。我已经在谷歌上搜索了相同的内容,并且发现许多程序员都反对使用静态变量。

我发现静态变量更易于使用。而且我认为它们也是有效的(如果我错了,请纠正我),因为如果我必须对一个类中的一个函数进行10,000次调用,我将很高兴使该方法静态化并对其使用直接方法Class.methodCall(),而不是10,000个类的实例使内存混乱,对吗?

而且,静态函数减少了对代码其他部分的相互依赖。他们可以充当完美的国家持有者。除此之外,我发现静态语言在Smalltalk和Scala等某些语言中得到了广泛实现。那么,为什么在程序员中(尤其是在Java世界中)普遍存在对静态的这种压迫?

PS:如果我对静态的假设错误,请纠正我。


阅读 403

收藏
2020-02-24

共1个答案

一尘不染

静态变量表示全局状态。这很难推理,也很难测试:如果创建对象的新实例,则可以在测试中推断其新状态。如果我使用的代码使用的是静态变量,则它可能处于任何状态-任何事情都可能对其进行修改。

我可以继续进行一段时间,但是要考虑的更大概念是,事物的范围越紧密,就越容易进行推理。我们善于思考小事情,但是如果没有模块化,就很难对一百万行系统的状态进行推理。顺便说一下,这适用于各种各样的事物,而不仅仅是静态变量。

2020-02-24