java – 我应该避免使用STATIC vaiables

我正在我的办公室设计一个java API(不是一个API),它将包含4000个常量.所以所有团队都可以直接使用它们.最初我想根据它们的类型创建它们的类,并将它们的静态对象创建为一个单独的类.所以任何人都可以直接使用它们.

但在阅读need of static variable后,我担心这可能是创建这么多静态变量的问题.有替代品吗?

*在我之后谁将加入这个项目也可以在我的Constant类中添加一个约束而不关心性能.很可能很少使用许多常数.

* Constant类的每个成员都代表一个具有自己行为的类.它可能是某些继承树的一部分.所以使用枚举可能不是一个好主意.

最佳答案
您想要创建一个容纳4000个常量的位置.这个类的用户可能会添加常量(可能在运行时)? Ť

>关注静力学的记忆问题是错误的.如果你需要4000个价值,他们将不得不住在某个地方,对吧?
>如果人们将在运行时添加值,这听起来像某些类型的单例映射或属性(实际上它只是一种映射).人们经常使用依赖注入框架(如Spring或Guice)来管理这类事情.
>如果您只是意味着添加编译常量,则可以将它们全部设为静态.你可能想让它们成为静态final,它们将被内联编译.
> 4000常数很可能是一个非常糟糕的主意.我曾经看到在一个地方定义了大量常量(> 100,偶数)的系统,通常会发生的事情是人们忘记了它们的定义并最终使用了自己的变体,这有点挫败了目的(对于例如,我在一个系统中使用了在“查询”类中定义的100个SQL查询.当然人们会立即忽略它,因为如果您需要的确切查询在那里而不是滚动您的查找更麻烦这个类最终变成1500个查询,许多完全重复,许多未使用,最常用过一次.毫无意义.我可以想象一些异常,你不会用命名约定“丢失”东西,但除非你有一个像这样的用例,这似乎是一个非常糟糕的主意.
>将常量分解为枚举可为您提供类型安全的引用.它还使概念上更容易处理.相比:

public class Constants { 
   String WORK_ADDRESS;
   String WORK_PHONE;
   String HOME_ADDRESS;
   String HOME_PHONE;
}

public enum ADRESS{ WORK, HOME }
public enum PHONE { WORK, PHONE }

你宁愿和谁合作?

转载注明原文:java – 我应该避免使用STATIC vaiables - 代码日志