WEB开发网
开发学院软件开发Java 演化架构与紧急设计: 积累惯用模式 阅读

演化架构与紧急设计: 积累惯用模式

 2010-01-20 00:00:00 来源:WEB开发网   
核心提示: 该代码可作为改进的候选目标(见下一小节 改进代码,第 1 部分),演化架构与紧急设计: 积累惯用模式(5),但是我想再多看一下,该代码存在的原因 是什么,以 Params 结尾的方法定义,最后的重定向(>)将结果文件粘贴到剪贴板上(至少在 Mac 上是如此),为什么它包含如此多的复杂性,

该代码可作为改进的候选目标(见下一小节 改进代码,第 1 部分),但是我想再多看一下,该代码存在的原因 是什么,为什么它包含如此多的复杂性。

放眼其他圈复杂度和传入耦合值都比较高的组合,我发现了 WebTable,它的那两个值分别为 33 和 12。 对它运行 JavaNCSS,可以肯定我的怀疑:它的第二复杂的方法是 evaluateExtraParams()。在这里我看到一个模式!看到这个重复的复杂元素出现在很多不同的类中,我怀疑有很多偶然的与参数有关的复杂性,所以我做一个实验。通过使用一点 UNIX® 命令行魔术,我观察 Struts 中有多少类中包含名为 evaluateParams() 或 evaluateExtraParams() 的方法:

find . -name "*.java" | xargs grep -l "void evaluate.*Params" > pbcopy 

这个命令查找当前目录以下的所有 Java™ 源文件,对于每个找到的文件,它在文件中搜索以 evaluate 开头,以 Params 结尾的方法定义。最后的重定向(>)将结果文件粘贴到剪贴板上(至少在 Mac 上是如此)。当我粘贴结果时,看到了令我惊讶的事:

AbstractRemoteCallUIBean.java 
Anchor.java 
Autocompleter.java 
Checkbox.java 
ComboBox.java 
DateTimePicker.java 
Div.java 
DoubleListUIBean.java 
DoubleSelect.java 
 
File.java 
Form.java 
FormButton.java 
Head.java 
InputTransferSelect.java 
Label.java 
ListUIBean.java 
OptionTransferSelect.java 
Password.java 
Reset.java 
Select.java 
Submit.java 
TabbedPanel.java 
table/WebTable.java 
TextArea.java 
TextField.java 
Token.java 
Tree.java 
UIBean.java 
UpDownSelect.java 

上一页  1 2 3 4 5 6 7 8  下一页

Tags:演化 架构 紧急

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接