我目前正在重构旧版Java代码,并发现以下编码约定:
public class MyClass {
public static final String CONST_1 = PropertyReader.getProperties("const 1");//PropertyReader will read properties by means of ResourceBundle
public static final String CONST_2 = PropertyReader.getProperties("const 2");
//Many similary constant values retrieved from the property file
}
从属性文件中检索static final String
的值。我的编程本能使我感到这可能是一种反模式。
问题:以上编码约定是否很常见?如果不是,如何将其重构为更具可读性和可维护性?
答案 0 :(得分:0)
人们有很多常见的方法:
我们团队使用的模式是有一个ConfigurationLoader
来接收一个文件。在程序的开头,我们运行ConfigurationLoader.load()
,它将读取文件并填充各个字段。我们控制静态吸气剂的读取属性,以确保ConfigurationLoader
已被初始化。
您可以使用静态初始化程序填充字段:
public static class Constants {
public static final String string1;
static {
string1 = getWhateverConfigString();
}
}
但是,我认为您的代码库已经可以正常运行,除非PropertyReader多次访问同一文件。