我和一位同事讨论了以下问题:
我们的项目读入配置文件并存储了许多参数.他将这些数据与每个变量的几十个getter方法一起存储在命名变量中.在我看来,这使得该课程过度使用getter方法并且难以维护.
private var;
public String getVar() {
return var;
}
// This appears dozens of times in the class
......
Run Code Online (Sandbox Code Playgroud)
我的解决方案是将键值对存储在映射中,并使用单个getValue(String key)方法,该方法将表示每个变量的键作为参数.这些键将作为常量列表存储在Config类中,该类还将处理从文件中读取数据.
Config c = new Config();
c.readConfig(someFile);
...
c.getValue(Config.SOME_VAR);
Run Code Online (Sandbox Code Playgroud)
他反对我的设计的论点是,如果任何密钥需要改变或被淘汰,那么密钥的所有实例都必须在源代码中的许多地方被追捕和更改,而在他的设计中,一切都是从1个文件管理的.此外,类型安全性存在问题,因为从getValue()返回的String中的Integer.parseInt()可能会崩溃,而在他的方法中,返回类型是固定的.
有关上述的任何评论?谢谢.
他的解决方案有什么难以维护的地方?除非配置格式发生变化,否则我预计不会进行任何维护(尽管意外总是有可能的)。如果需要维护,我认为这个解决方案会让它变得更容易,因为所有相关的解析(包括 string->int 等)都在一个地方。
他的编译时检查要好得多。如果你删除一个方法,编译器会告诉你。如果您将返回值分配给错误的类型,编译器会告诉您。
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |