在整个应用程序中,您在哪里使用常量?

2022-09-01 10:29:20

接口是一个可接受的地方来存储我的

public static final Foo bar

您是否推断出它们要从程序外部读取?你为它编造了一个超级班级吗?

当情况出现时,你是怎么做到的?


答案 1

我会将每个常量放入与它最密切相关的类或接口中(例如,因为它将被其方法使用)。

一个非常诱人但最终非常愚蠢的想法是有一个“常量类”(或接口),其中包含应用程序中使用的所有常量。乍一看,这看起来很“整洁”,但对于可维护性来说并不好,因为您希望按它们实现的功能对事物进行分组,而不是按常量等技术细节进行分组(您会将所有接口放入专用包中吗?所有抽象类?

这个想法也是愚蠢的,因为对该类/接口的任何更改(由于不断内联)都需要重新构建所有使用任何常量的类 - 即几乎整个应用程序。因此,应用越大,您就越频繁地需要这种完全重建,并且花费的时间也就越长。我参与了这样一个项目,这个问题导致每个开发人员每隔一天暂停15分钟......


答案 2

如果你正在谈论一个简单的应用程序,那么类方法很好:Constants

public class Constants {
    private Constants() {} // no way to instantiate this class
    public static final String MY_VAL = "123";
}

如果你正在构建一个更大的应用程序,你应该使用依赖注入,看看如何将属性值注入到使用注释配置的Spring Bean中?