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