跨包的 Java 常量



我有一个由 5 个不同的 Java 包组成的项目。 它们都包含具有幻数和硬编码字符串的类,我希望为其创建常量。 我想知道什么是最佳实践。我是否应该为程序中所有类都可以导入的所有常量创建一个 Constants 类?还是将常量拆分为多个较小的文件更有效?

有关最佳实践,请参阅最小特权原则。

应提取内联硬编码常量,但不应将所有常量放入一个整体类中。相反,将常量拆分为上下文适当的类("多个较小的文件"(,并将这些类保留在需要正确引用的包级别。

如果该值仅适用于一个特定的类(也称为private static final(,则无需将此值从类中移除。如果只在那个地方引用它,它只会产生更多的工作来将其保留在其他地方。

如果值的行为类似于全局变量或需要在许多不同的类(也称为public static final(中访问,则将相关值提取到单独的类中是有意义的,但可能是您应该调查的代码气味。

由于您使用的是软件包,请考虑使用软件包私有 (static final( 将配置值隔离到需要它的单个软件包。

请考虑使用配置/属性文件来注入值,而不是在类中显式硬编码它们。根据您的需求,您可以使用简单的Java属性,或者有许多库/框架可以帮助您处理属性,例如Spring。

相关内容

  • 没有找到相关文章

最新更新