什么是Cyclomatic Complexity,以及其计算方法,这里不做讨论。
圈复杂度可以用PMD(http://pmd.sourceforge.net/)分析出,它有相应的eclipse plug-in。
一般我们会用重构来降低圈复杂度,重构办法有:
1、Extract method
2、合并条件分支,合并后可用boolean变量来替换条件分支中的语句。例如:
//合并后的条件分支
// if (((Name)names[i]).getKey() > ((Name)names[j]).getKey() && b>a && c>b) {
// md(names, i, j);
// }
[color=red]boolean ddd=((Name)names[i]).getKey() > ((Name)names[j]).getKey() && b>a && c>b;[/color]
if (ddd) {
md(names, i, j);
}
3、利用多态减少分支
4、利用state模式减少分支
....
总之其原则是分而治之,越少越好。
圈复杂度可以用PMD(http://pmd.sourceforge.net/)分析出,它有相应的eclipse plug-in。
一般我们会用重构来降低圈复杂度,重构办法有:
1、Extract method
2、合并条件分支,合并后可用boolean变量来替换条件分支中的语句。例如:
//合并后的条件分支
// if (((Name)names[i]).getKey() > ((Name)names[j]).getKey() && b>a && c>b) {
// md(names, i, j);
// }
[color=red]boolean ddd=((Name)names[i]).getKey() > ((Name)names[j]).getKey() && b>a && c>b;[/color]
if (ddd) {
md(names, i, j);
}
3、利用多态减少分支
4、利用state模式减少分支
....
总之其原则是分而治之,越少越好。