我正在重构一些旧代码并找到一个包含字符串常量的类“标签”,其中大多数标签被一些 XML-Parser-Handlers 使用。但也用于序列化数据。它们被定义为空白:
公共静态字符串代理,名称,X,Y,KEY,...代码;
并用他们自己的名字初始化:
static {
Field[] fields = Tags.class.getFields();
for (int i = 0; i < fields.length; ++i) {
try {
// init field by its lowercased name
String value = fields[i].getName().toLowerCase();
fields[i].set(null, value);
} catch (Exception e) {
// exception should not occur, because only strings over here.
e.printStackTrace();
}
}
}
你认为这有意义吗?优点:
- 所有标签都在一个地方
- 保证名称和值之间的对应关系(没有错误输入)
- 输入时 IDE 自动完成支持
缺点:
- 不是真正的常数(不是最终的)
- 可读性——只使用字符串文字“proxy”、“name”等会更直接
- 反射初始化消耗处理时间——延迟启动时间
那么——保留它还是重构它?