我有类似的东西:
Properties props = new Properties();
// This type of key-value property is in several code lines
props.put("mail.transport.protocol", settings.getSmtpProtocol());
在我的代码中,在几个地方访问道具。每次,我需要通过其字符串键访问一些属性。最近,我在其中一个关键字符串中进行了一些小的代码更改,并且密钥不匹配造成了严重破坏。
假设它在不久的将来会增加大小和复杂性,那么在我的代码库中应该避免出现这种问题的正确设计是什么?我可以考虑以下选项,但不确定最佳方式:
而不是像代码中的几个地方那样将密钥写为“mail.transport.protocol”,“mail.smtp.host”,“mail.smtp.port”等字符串,而是将它们存储在类中?并且单元测试是否将适当的类变量添加到属性中?
我是否应该将道具重构为另一个类[仅包含我所需的属性],道具是否已在许多代码行中获取/设置?
拥有道具中的关键字符串,并将“关键字”作为单元测试?但是,密钥被写成几次字符串。
答案 0 :(得分:0)
创建单独的属性文件。说mail.properties。
此文件包含所有键值对。将来如果有人想要更改任何属性,他只需更新此属性文件而不是更改java类。
然后创建一个Java类来加载所有这些属性,并为该类中的每个属性创建公共静态常量。
在您想要使用它们的地方使用上述常量。