数十种getter方法与单一get方法相比

dav*_*vid 5 java

我和一位同事讨论了以下问题:

我们的项目读入配置文件并存储了许多参数.他将这些数据与每个变量的几十个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()可能会崩溃,而在他的方法中,返回类型是固定的.

有关上述的任何评论?谢谢.

Mat*_*hen 4

他的解决方案有什么难以维护的地方?除非配置格式发生变化,否则我预计不会进行任何维护(尽管意外总是有可能的)。如果需要维护,我认为这个解决方案会让它变得更容易,因为所有相关的解析(包括 string->int 等)都在一个地方。

他的编译时检查要好得多。如果你删除一个方法,编译器会告诉你。如果您将返回值分配给错误的类型,编译器会告诉您。

  • 长期和难以维护之间是有区别的。@cdhowie 是对的。根据配置格式,您也许可以将其作为真正的“源”,并完全生成 Java。 (3认同)