我对在 Java 中使用常量文件和属性文件有点困惑。
如何决定何时使用Constants.java以及何时使用.properties文件?
当您不希望用户/部署人员/测试人员/测试更改它们时,请在 Java 代码中使用硬连线常量。
如果您确实希望这样做,请使用属性文件。
关键是更改应用程序源代码中的硬连线常量需要编辑源代码、重新构建和重新部署。相比之下,更改属性文件可能就像启动记事本一样简单。
你评论说:
正如您所说,更改属性文件很简单,而更改常量文件需要我们重新构建应用程序。那么,我们不应该总是更喜欢使用属性文件吗?
不,并非总是如此。 例如,如果您将应用程序分发给最终用户以安装在他们的机器上,并且它具有您不希望用户更改的常量,那么将它们放在属性文件中将是一个坏主意。
不可能将其简化为“始终偏爱 X”的建议。您需要了解自己的应用需求并自行决定。
我的清单
属性文件:
是否可以根据环境等进行配置?
消息、标签等
适用于特定情况(规则的状态列表等)。键值对。可由开发人员以外的其他人(即分析师、业务用户等)修改。
持续的:
是常数。不可配置。主要用于优化和重用。避免按键分散。
对于像 YES = "yes" 这样的常量。不是真正的关键价值。缓存键等
确保检索和设置使用相同键的常量,即使来自应用程序中的不同位置,EXAMPLE xyz.put(KeyConstants.SOME_KEY, "somevalue"); xyz.get(KeyConstants.SOME_KEY) 来自不同的类,当然 xyz 是共享的或单例的。
常量- 当您不介意每次更改值时重新编译应用程序时。这里有点讽刺。如果它被称为常量,你为什么要改变它:)
属性文件- 当您希望只更改值并可能重新启动应用程序以获取更改时。
通常,常量类中的任何内容都被认为是“硬编码”的;也就是说,您需要重新编译才能进行更改。
将.properties
文件用于配置之类的事情,您不必为了进行更改而被迫重新编译。这样,您可以简单地更改属性文件并重新启动您的应用程序。
当您要指定因部署而异或随时间变化的参数时,通常使用属性文件。
当参数不是动态的,因此不应该根据外部因素进行更改时,您可以使用常量。每次更改值时都必须重新编译该类。
有许多不同的方面需要考虑。最重要的是
这些方面使属性文件对于存储配置非常有用。
另一方面,常量类需要编译,但如果您不打算经常更改这些常量,则“更安全”。
常量在编译时是固定的。因此,如果您没有预见到值的任何变化,常量将是个好主意。
属性具有可外化的优点。您可以将一个属性文件用于开发,另一个用于测试,另一个用于生产。但是,很多时候,很少更改的属性是软件工作的内部属性,它们被放入属性文件中,这使得它们难以管理。
OTOH 常量被编译,因此任何错误都将在编译时被捕获。
所以答案是,这取决于。如果属性中的值是您想要外部化的真正配置更改,则使用属性文件。否则将它们设为 Java 常量。不过,您最终可能会同时使用两者。