`

控制圈复杂度的10种重构技术总结

 
阅读更多
一、Composing Methods(重新组织你的函数)
  1.Extract Method(提炼函数)
     分为不同的step步骤进行处理,主干逻辑方法控制在7个以内
     将代码放进一个独立函数中,并让函数名称解释该函数的用途
  2.Substitute Algorithm(替换你的算法)
    将函数本体替换为另一个更清晰、简化的算法 ,如多值匹配candidates.contains

二、Simplifying Conditional Expressions(简化条件表达式)
  3.Decompose Conditional(分解条件式)
     从if、then、else三个段落中分别提炼出独立函数
  4.Consolidate Conditional Expression(合并条件式)
     将多个条件合并 为 c1||c2&&c3,并提炼为一个函数
  5.Consolidate Duplicate Conditional Fragments(合并重复的条件片断)
     多个条件都执行的代码,将重复代码搬移到条件式之外
  6.Remove Control Flag(移除控制标记)
     以break和return取代控制标记

三、Making Method Calls Simpler(简化函数调用)
  7.Separate Query from Modifier(将查询函数和修改函数分离)
     单一职责原则,建立两个不同的函数,其中一个负责查询,另一个负责修改
  8.Parameterize Method(令函数携带参数)
      通用函数,建立单一函数,以参数表达那些不同的值
   9.Replace Parameter with Explicit Methods(以明确函数取代参数)
   多个if对应对个函数;  针对该参数的每一个可能值,建立一个独立函数
四、针对面向对象编程:
  10.Replace Conditional with Polymorphism(以多态取代条件式)
     将整个条件式的每个分支放进一个子类的重载方法中,然后将原始函数声明为抽象方法
     面向接口编程,一个接口多种实现;利用state模式减少分支




分享到:
评论

相关推荐

    控制圈复杂度:9种重构技术.ppt

    所谓圈复杂度是一种代码复杂度的衡量标准。在软件测试的概念里,圈复杂度“用来衡量一个模块判定结构的复杂程度

    sonar最大平均圈复杂度

    圈复杂度通过分析程序控制流图(Control Flow Graph, CFG)来计算,计算公式通常为 V(G) = E - N + 2P,其中 E 是边的数量,N 是节点的数量,P 是连通的区域数量(也称为基本路径数)。一个简单的函数或方法可能只有...

    source monitor 圈复杂度

    圈复杂度计算公式通常基于程序的控制流程图,基本规则是:程序的基本块(如函数或方法)的圈复杂度V(G)等于其控制流图的边数E减去节点数N加2。简化表示为V(G) = E - N + 2。 **圈复杂度的意义** 1. **代码可读性**...

    idea 计算圈复杂度插件

    一般来说,圈复杂度建议保持在10以下,以确保代码易于理解和测试。 在IDEA中,我们可以利用“圈复杂度插件”来进行自动分析。这个插件能够集成到IDEA的代码审查和质量检查工具中,如 inspections 和 code analysis...

    SourceMonitor扫描圈复杂度

    一般而言,圈复杂度应保持在较低水平,如1至10之间,超过这个范围可能需要考虑重构代码以降低复杂性。 **使用SourceMonitor的好处** 1. **代码质量评估**:SourceMonitor提供的圈复杂度数据可以帮助开发者识别出...

    Visual Studio2015的圈复杂度检测工具code metrics

    这个工具是用于检测代码圈复杂度的,可以显而易见的标注每个方法的圈复杂度,并且依据大小有颜色直观的显示

    如何测量程序圈复杂度度量

    本文介绍了一种基于程序控制流的数学技术——圈复杂度(Cyclomatic Complexity),该方法由Thomas J. McCabe提出。圈复杂度是一种图形理论的复杂度度量方法,它不仅能够帮助管理者和开发者控制程序的复杂性,还能够...

    面向Python的圈复杂度静态分析方法研究.pdf

    为了实现Python程序圈复杂度的自动化计算,研究者们提出了一种基于抽象语法树(AST)和字节码的静态分析方法。抽象语法树是源代码语法结构的抽象表示形式,它反映了一个程序的结构。而字节码是源代码经过编译后形成...

    圈复杂度metrics

    - 当圈复杂度达到10以上时,代码的可维护性和可读性可能会大大降低。 在软件开发过程中,降低圈复杂度有助于提高代码质量,减少潜在的错误,增强代码的可读性和可测试性。常见的优化策略包括拆分大型函数,减少嵌套...

    圈复杂度PPT

    详细介绍了代码的圈复杂度,常见的圈复杂度侧脸方法,及9中常规降低圈复杂度的方法。

    php圈复杂度 phploc.phar

    php圈复杂度 phploc.phar

    面向Python的圈复杂度静态分析方法研究.zip

    在软件工程领域,圈复杂度(Cyclomatic Complexity)是一种衡量程序复杂性的指标,它能够帮助开发者理解代码的复杂程度,预测出错的可能性,并优化代码结构。本研究聚焦于Python编程语言,探讨如何运用静态分析技术...

    IntellJ IDEA代码圈复杂度检查工具MetricsReloaded

    IntellJ IDEA代码圈复杂度检查工具,针对plugin插件市场无法安装到MetricsReloaded,提供硬盘安装,下载后在idea plugin中选择install from disk,选择解压出来的压缩包MetricsReloaded .zip即可,之后重启idea,...

    SourceMonitor,免费代码统计工具,圈复杂度,代码数量,覆盖率等等

    SourceMonitor,免费代码统计工具,圈复杂度,代码数量,覆盖率等等

    Lizard工具,圈复杂度,代码注释率

    总结来说,Lizard工具通过计算圈复杂度和注释率,为开发者提供了一种量化评估代码质量的方法。它有助于发现并改进代码的潜在问题,提高软件的可维护性和团队协作效率。在实际开发中,合理利用这类工具可以有效地提高...

    降低圈复杂度,输入日期求解星期。

    最优雅的方法,通过降低圈复杂度,实现问题的解决。最大的亮点就是降低圈复杂度。 输入星期得出星期几。

    cyclo:计算C语言代码的圈复杂度度量

    Cyclo-C语言的圈复杂度工具 原始版本的版权(c)1993 Roger Binns 更新版权(c)2016 Stephen L Arnold 这些工具由Roger Binns作为英国大学计算机科学系的四年级项目(作为计算机科学学位的一部分)生产,用于...

    03. 控制软件复杂度的原则1

    "控制软件复杂度的原则1" 软件系统的复杂度是软件开发中最大的挑战之一,如何控制软件复杂度是软件开发者最关心的问题。控制软件复杂度的原则可以分为三个方面:规模、结构和变化。首先,我们需要认识到软件系统的...

Global site tag (gtag.js) - Google Analytics