微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么避免函数中嵌套块是一个好主意? (PHP)

我安装了一个Netbeans 7.4测试版,并有一个新的提示,说“在功能声明中太多的嵌套块 – 介绍新功能的好习惯…”.

我尝试避免函数内的嵌套块更好的可读性,但是有什么其他原因,这将是一个更好的“想法”,专门针对PHP,如果这很重要.

这个正式的名字是 Cyclomatic Complexity.

这是基于函数中“决策点”数量函数复杂程度的度量.数字越高,功能越复杂.

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 – 另一个类似的工具.

有一些其他工具可用,但这可能足以开始;先了解那些.研究主题时,您会自然会遇到别人.

原文地址:https://www.jb51.cc/php/140127.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐