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

标签 java static

我是一名刚接触企业界的 Java 程序员。最近我使用 Groovy 开发了一个应用程序。和Java。在我编写的所有代码中,都使用了相当多的静态参数。高级技术人员要求我减少使用的静力学数量。我用谷歌搜索过,发现很多程序员都反对使用静态变量。

我发现静态变量使用起来更方便。而且我认为它们也很有效(如果我错了,请纠正我),因为如果我必须对一个类中的函数进行 10,000 次调用,我会很高兴将方法设为静态并使用简单的 Class .methodCall() 就可以了,而不是用 10,000 个类的实例来弄乱内存,对吧?

此外,静态减少了对代码其他部分的相互依赖。他们可以充当完美的国家持有者。除此之外,我发现静态在某些语言中得到了广泛的实现,例如 SmalltalkScala .那么为什么程序员(尤其是在 Java 世界)中普遍存在对静态的反对?

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

最佳答案

静态变量代表全局状态。这很难推理也很难测试:如果我创建一个对象的新实例,我可以在测试中推理它的新状态。如果我使用使用静态变量的代码,它可以处于任何状态 - 并且任何东西都可以修改它。

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

关于java - 为什么静态变量被认为是邪恶的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7026507/

相关文章:

java - 在Java中将AWS APIGateway的模型转换为JSON

java - 如何在 Grails 中配置 Spring-Security-LDAP 插件以使用 TLS?

c++ - 从外部静态库访问函数

python - Django 管理员不会加载某些静态文件

Linux 找不到动态链接的应用程序

java - 如果我有多个格式不同的字符串,我是否需要一个单独的 DateFormat 实例来解析每个字符串?

java - 在 jar 文件 Java Spring 中加载资源

java - java.util.Vector 序列化线程安全吗?

java - 将处理类的所有实例的HashMap的方法放在单独的类中

c++ - 将二维数组转换为指针到指针