演化架构与紧急设计: 积累惯用模式
2010-01-20 00:00:00 来源:WEB开发网ckjm 报告的圈复杂度数字表示这个类中所有方法的复杂度之和。我想确定是什么使这个类如此复杂,所以需要各个方法的复杂度数字。对这个类运行开源圈复杂度工具 JavaNCSS,可得到图 4 所示的结果:
图 4. UIBean 类中各个方法的复杂度数字
到目前为止,最复杂的方法是 evaluateParams(),其复杂度为 43(也是代码行数最多的)。该方法显然是用于处理常见的作为请求的一部分传递给 Struts 控制器的额外参数,将参数类型发送到实际的 Struts 类和组件。该代码中存在很多结构性重复,如清单 1 所示:
清单 1. evaluateParams() 方法的部分内容,其中有结构性重复
if (label != null) {
addParameter("label", findString(label));
}
if (labelPosition != null) {
addParameter("labelposition", findString(labelPosition));
}
if (requiredposition != null) {
addParameter("requiredposition", findString(requiredposition));
}
if (required != null) {
addParameter("required", findValue(required, Boolean.class));
}
if (disabled != null) {
addParameter("disabled", findValue(disabled, Boolean.class));
}
if (tabindex != null) {
addParameter("tabindex", findString(tabindex));
}
if (onclick != null) {
addParameter("onclick", findString(onclick));
}
// much more code elided for space considerations
更多精彩
赞助商链接