提升代码质量——控制程序复杂度
如何度量复杂度
最著名的是Tom McCabe⽅法,通过计算程序中“决策点”的数量来衡量复杂度。下表给出了⼀种⽤于计算决策点的⽅法。
计算⼦程序中决策点数量的技术
1.从1开始,⼀直往下通过程序
2.⼀旦遇到以下关键籽,或者其同类的词,就加1:
if、while、repeat、for、and、or
3.给case语句中的每⼀种情况都加1
下⾯举⼀个例⼦:
If (((status = Success) and done) or
(not done and (numLines >= maxLines))) then ...
在这段代码中,从1算起,遇到if得2,and得3,or得4,and得5。加起来,这段代码总共包含了5个决策点。
如何处理复杂度的度量结果
0-5 ⼦程序可能还不错
6-10 得想办法简化⼦程序了
调用子程序的例子10+ 把⼦程序的某⼀部分拆分成另⼀个⼦程序并调⽤它
说明:
1.把⼦程序的⼀部分提取成另⼀个⼦程序,不会降低整个程序的复杂度,只是把决策点移到其他地⽅,降低在同⼀时间必须关注的复杂度⽔平。所以降低⼀个给定⼦程序的复杂度是有价值的。
2.10个决策点的上限并不是绝对的。应该把决策点的数量当作⼀个警⽰,该警⽰说明某个⼦程序可能需要重新设计了。不要死守这个规则。⼀条情况很多的case语句可能会包含超过10个的元素。如果硬拆开它可能就是很愚蠢的,这取决于该case语句的⽤途。
其他类型的复杂度
其他度量⽅法包括:所⽤的数据量、控制结构中的嵌套层数、代码⾏数、对同⼀变量的先后引⽤之间的代码⾏数(跨度)、变量⽣存的代码⾏数(⽣存期),以及输⼊和输出的量。
总结:
上述总结是将软件程序复杂度进⾏量化,并提供优化建议,所以将复杂度降低到最低⽔平的编写⾼质量的代码的关键。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论