圈复杂度主要与分支语句(if、else、,switch 等)的个数成正相关。如下代码:
- public String case2(int index, String string) {
- String returnString = null;
- if (index < 0) {
- throw new IndexOutOfBoundsException("exception <0 ");
- }
- if (index == 1) {
- if (string.length() < 2) {
- return string;
- }
- returnString = "returnString1";
- } else if (index == 2) {
- if (string.length() < 5) {
- return string;
- }
- returnString = "returnString2";
- } else {
- throw new IndexOutOfBoundsException("exception >2 ");
- }
- return returnString;
- }
根据公式 V(G) = e – n + 2 = 12 – 8 + 2 = 6 。代码的圈复杂段为6。
只能记做一个在开发中常用的检测圈复杂度的工具,PMD,checkstyle ,sourcemonitor都可以检
测到高复杂度的代码块。在代码的开发中,配合各种圈复杂度的检测插件,将高复杂度的代码
进行适当的拆分、优化,可以大大提高代码整体的质量,减少潜在bug存在。