演化架构与紧急设计: 对设计进行重构
2009-11-05 00:00:00 来源:WEB开发网这段代码中另一个常见的复制问题在 ApplicationMap.java 和 Sorter.java 文件中。ApplicationMap.java 包含一个共 27 行的复制代码块,如清单 1 所示:
清单 1. ApplicationMap.java 中的复制代码entries.add(new Map.Entry() {
public boolean equals(Object obj) {
Map.Entry entry = (Map.Entry) obj;
return ((key == null) ?
(entry.getKey() == null) :
key.equals(entry.getKey())) && ((value == null) ?
(entry.getValue() == null) :
value.equals(entry.getValue()));
}
public int hashCode() {
return ((key == null) ?
0 :
key.hashCode()) ^ ((value == null) ?
0 :
value.hashCode());
}
public Object getKey() {
return key;
}
public Object getValue() {
return value;
}
public Object setValue(Object obj) {
context.setAttribute(key.toString(), obj);
return value;
}
});
除了多次使用嵌套的三元运算符外(是判断任务安全性编码的良好指标,因为任何人都不能读取这些代码),这段复制代码的有趣之处并不在于代码本身。而是在于在出现复制的两个方法之前显示的先兆。第一处如清单 2 所示:
更多精彩
赞助商链接