zoukankan      html  css  js  c++  java
  • 提升代码质量——控制程序复杂度

    如何度量复杂度

    最著名的是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语句的用途。

    其他类型的复杂度

      其他度量方法包括:所用的数据量、控制结构中的嵌套层数、代码行数、对同一变量的先后引用之间的代码行数(跨度)、变量生存的代码行数(生存期),以及输入和输出的量。

    总结:

      上述总结是将软件程序复杂度进行量化,并提供优化建议,所以将复杂度降低到最低水平的编写高质量的代码的关键。

  • 相关阅读:
    shell tr命令的使用
    linux find prune排除某目录或文件
    在vue中使用axios发送post请求,参数方式
    webpack官网demo起步中遇到的问题
    css中盒子模型与box-sizing属性
    jquery获得 url的变量
    17-js观察者模式
    基于Jquery ui 可复用的酒店 web页面选择入住日期插件
    webkit浏览器下改变滚动条样式
    用户登录时,禁止chrome提示用户保存密码
  • 原文地址:https://www.cnblogs.com/dulixiaoqiao/p/6481452.html
Copyright © 2011-2022 走看看