这是基于函数中“决策点”数量的函数复杂程度的度量.数字越高,功能越复杂.
Complexity is determined by the number of decision points in a method plus one for the method entry. The decision points are ‘if’,‘while’,‘for’,and ‘case labels’. Generally,1-4 is low complexity,5-7 indicates moderate complexity,8-10 is high complexity,and 11+ is very high complexity.
(取自http://phpmd.org/rules/codesize.html)
认为您的复杂度值太高的原因是因为它使功能难以测试.
为了测试一个函数的全部潜力,您需要对每个可能的代码路径进行单独的测试.代码路径的数量随着每个新的决策点呈指数增长,这意味着当您在单个功能中获得了多少决策时,您需要进行数百次测试,以确保已覆盖它可能执行的全部功能.
单个功能的数百个测试显然太多了,所以更好的选择是通过将每个功能的决策点分成几个较小的函数,每个功能的决策少.
您还需要使函数离散,以使它们不依赖于彼此运行.这允许它们彼此隔离地进行测试. (否则您仍然有一个调用中的原因太多决定的问题)
测试功能彼此隔离的过程称为Unit Testing.这本身就是一个非常大的话题,但如果您想了解更多有关良好的软件开发实践的知识,那么值得研究.
由于您已经标记了这个问题PHP,所以我将指出一些可帮助您的工具:
> PHP Unit – 这是PHP的事实上的标准单元测试包.
> PHPMD – “PHP Mess Detector”;一个用于分析您的代码以查找过多复杂性的工具.
> pDepend – 另一个类似的工具.
有一些其他工具可用,但这可能足以开始;先了解那些.研究主题时,您会自然会遇到别人.