将常量用于属性键有什么意义?

jcr*_*ey3 5 java properties constants

最近,我遇到了许多依赖"属性文件"进行配置的Java代码.但是代码不是普通的旧字符串文字,而是使用常量(静态最终字符串)来检索属性值.

我发现这种额外的间接级别很烦人,因为我需要在EITHER方向上执行两次查找.如果我从配置文件中观察到的属性开始,我必须首先搜索属性名称以找到Java常量,然后再次搜索以在代码中查找对常量的引用.如果我从代码开始,我必须找到常量的实际值,然后才能确定配置文件中属性的值!

重点是什么?

我理解使用常量引用资源包中的键的价值,通常支持i18n.我指的是简单的,非面向用户的配置值.我能想到的唯一原因是为了让以后更改属性名称变得容易,但这个好处远远小于骚动恕我直言,特别是考虑到全球搜索和替换的简易性.

Fer*_*yer 12

首先,在使用常量而不会出现编译器错误时,不能错误键入键.


Nic*_*cue 6

即使在使用常量进行简单全局搜索和替换(这不是新事物)的那一天,您也知道String仅适用于该属性文件.这很好,因为:

  • 常量表示拼写错误会产生编译错误,字符串则不会
  • 常量允许您将一个属性文件的键"ID"与另一个XML文件的键"ID"分开.相同字符串,不同的含义.
  • 全局搜索和替换可能会破坏很多东西,而您的IDE将允许您非常轻松地搜索常量的所有用法,并仅更改相关的常量.

在很多情况下,这只是程序员进入的一个好习惯,但良好的习惯是有原因的.


Shu*_*oUk 6

如果没有需要重新编译改变一个值,你不可避免地需要一些重定向但这样做又是非常愚蠢的,除非在多个地方(本身的关注点分离不良的可能符号)引用的关键需求.

关键字符串应该具有足够的描述性,以至于它们不能与其范围之外的其他人(通常是类)发生冲突,并且将文字保持在单个类中是唯一的既不复杂也不可能如此严重,以至于值得在单个块中声明它们.因此(IMO)这种做法只是在没有理解规则的原始意图的情况下盲目地遵守规则的人.

如果你需要为他们引用一个替代指南以证明放松这个,我建议KISS.