我有一个由 5 个不同的 Java 包组成的项目。 它们都包含具有幻数和硬编码字符串的类,我希望为其创建常量。 我想知道什么是最佳实践。我是否应该为程序中所有类都可以导入的所有常量创建一个 Constants 类?还是将常量拆分为多个较小的文件更有效?
有关最佳实践,请参阅最小特权原则。
应提取内联硬编码常量,但不应将所有常量放入一个整体类中。相反,将常量拆分为上下文适当的类("多个较小的文件"(,并将这些类保留在需要正确引用的包级别。
如果该值仅适用于一个特定的类(也称为private static final
(,则无需将此值从类中移除。如果只在那个地方引用它,它只会产生更多的工作来将其保留在其他地方。
如果值的行为类似于全局变量或需要在许多不同的类(也称为public static final
(中访问,则将相关值提取到单独的类中是有意义的,但可能是您应该调查的代码气味。
由于您使用的是软件包,请考虑使用软件包私有 (static final
( 将配置值隔离到需要它的单个软件包。
请考虑使用配置/属性文件来注入值,而不是在类中显式硬编码它们。根据您的需求,您可以使用简单的Java属性,或者有许多库/框架可以帮助您处理属性,例如Spring。