`
banner
  • 浏览: 53678 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用重构降低圈复杂度(Cyclomatic Complexity)

阅读更多
什么是Cyclomatic Complexity,以及其计算方法,这里不做讨论。
圈复杂度可以用PMD(http://pmd.sourceforge.net/)分析出,它有相应的eclipse plug-in。

一般我们会用重构来降低圈复杂度,重构办法有:
1、Extract method
2、合并条件分支,合并后可用boolean变量来替换条件分支中的语句。例如:
   //合并后的条件分支
   //    if (((Name)names[i]).getKey() > ((Name)names[j]).getKey() && b>a && c>b) {
   //       md(names, i, j);
   //    }
   boolean ddd=((Name)names[i]).getKey() > ((Name)names[j]).getKey() && b>a && c>b;
   if (ddd) {
      md(names, i, j);
   }
3、利用多态减少分支
4、利用state模式减少分支
....

总之其原则是分而治之,越少越好。
分享到:
评论

相关推荐

    idea 计算圈复杂度插件

    在软件开发过程中,代码的质量和可维护性是至关重要的因素,而圈复杂度(Cyclomatic Complexity)就是衡量代码复杂性的一个重要指标。IntelliJ IDEA,作为一款强大的Java集成开发环境,提供了计算圈复杂度的插件,...

    source monitor 圈复杂度

    **圈复杂度(Cyclomatic Complexity)** 圈复杂度,又称为McCabe复杂度,是软件度量的一个重要概念,由Thomas J. McCabe在1976年提出。它衡量的是程序中控制流的复杂性,即程序执行路径的数量。圈复杂度计算公式...

    sonar最大平均圈复杂度

    **圈复杂度(Cyclomatic Complexity)** 圈复杂度,又称 McCabe 复杂度,是软件度量的一个重要指标,由 Thomas J. McCabe 在 1976 年提出。这个概念主要用于评估程序代码的复杂性,从而预测其错误率和维护难度。圈...

    SourceMonitor扫描圈复杂度

    **圈复杂度(Cyclomatic Complexity)** 圈复杂度,又称为结构复杂度或McCabe复杂度,是由Thomas J. McCabe在1976年提出的衡量程序复杂性的指标。它基于控制流图(Control Flow Graph, CFG),计算程序路径的数目。...

    圈复杂度metrics

    圈复杂度(Cyclomatic Complexity),也称为结构复杂度或Mccabe度量,是软件度量中的一个重要概念,主要用于评估程序代码的复杂性。这个概念由Thomas J. McCabe在1976年提出,目的是为了帮助软件开发者识别出可能...

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

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

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

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

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

    首先,Lizard工具是一个源代码分析工具,主要用于计算代码的各种复杂度指标,包括圈复杂度(Cyclomatic Complexity Number, CCN)和代码注释率。Lizard支持多种编程语言,如C、C++、Java、Python等,它可以帮助...

    go-cyclomatic-complexity

    为了确保代码质量,开发人员会采用各种代码度量标准,其中一种就是圈复杂度(Cyclomatic Complexity)。圈复杂度是衡量程序结构复杂性的指标,由计算机科学家Thomas J. McCabe提出。Go-cyclomatic-complexity是一个...

    软件复杂度概述

    软件复杂度的计算方法多种多样,其中最著名的当属McCabe环路复杂度(Cyclomatic Complexity)。 ##### 1. McCabe环路复杂度 - **定义**:McCabe环路复杂度由Thomas J. McCabe于1976年提出,用于量化程序控制流的...

    resharper-cyclomatic-complexity:ReSharper插件可在您键入时测量圈复杂度

    可以通过转到ReSharper→Extensions Manager并搜索“ Cyclomatic Complexity”来安装它。 循环复杂度是旨在显示代码复杂度的度量。 它测量通过代码块的路径数-分支和条件语句越多,度量越高。 随着代码变得越来越...

    代码复杂度检查工具Source Monitor

    通过检查关键的编程指标,如圈复杂度(Cyclomatic Complexity)和代码深度注释率,Source Monitor提供了一种量化的方式来识别代码中的潜在问题,从而优化代码结构,降低维护成本。 **一、圈复杂度** 圈复杂度是...

    什么是OOAD中的圈复杂度测试

    在面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)中,圈复杂度(Cyclomatic Complexity)是一种衡量代码复杂性的指标,它主要用于软件测试和代码质量评估。这个概念由Michael J. McCabe在...

    Cyclomatic-Complexity-:软件项目管理——软件开发的重要组成部分

    为了更好地利用这个工具,开发者需要了解如何解读圈复杂度的结果,并根据结果对代码进行重构。例如,将复杂的函数拆分为多个小函数,减少嵌套循环和条件语句,使用策略模式等设计模式来简化逻辑,都是降低圈复杂度的...

    gocyclo:计算Go源代码中函数的圈复杂度

    Gocyclo Gocyclo计算Go源代码中函数的。 循环复杂度是一种,可用于标识需要重构的代码。... 通过应用导致较小功能的通用重构技术,可以降低复杂性。 安装 要安装gocyclo命令,请运行 $ go get github.com/fzipp/gocy

    McCabe的复杂度论文

    - **度量标准**:McCabe提出的复杂度度量标准是基于控制流图中的环路复杂度(Cyclomatic Complexity)。 - **计算方法**:环路复杂度 = 边的数量 - 节点的数量 + 2(对于单个组件)。这种方法可以量化程序中可能存在...

    基于java代码的测试覆盖率.pdf

    中级使用阶段,我们关注的是代码的复杂度,特别是圈复杂度(Cyclomatic Complexity)。圈复杂度是衡量代码结构复杂性的一种方式,它与程序可能出现的错误紧密相关。一个较低的圈复杂度意味着代码更易于理解和维护。...

    技术负债;软件复杂度

    软件复杂度,特别是循环复杂度(Cyclomatic Complexity),是衡量代码复杂性的一个关键指标,它与技术负债紧密相关。高循环复杂度的代码更难理解和维护,因此更容易积累技术负债。为了管理技术负债,开发团队需要...

    C3学习资料

    3. **复杂度指标(Complexity Metrics)**:这是用来测量复杂性的具体数值,如圈复杂度(Cyclomatic Complexity)、深度(Depth)、宽度(Width)等。圈复杂度是衡量程序控制流复杂性的一个指标,它计算了程序中的...

    <转>SourceMonitor: 代码重构的小工具,大用场

    3. **复杂度分析**:SourceMonitor能够计算每个函数的圈复杂度(Cyclomatic Complexity),这是一个衡量代码复杂性的指标,数值越高,代码越难以理解和维护。 4. **类与函数分析**:它能够列出项目中的所有类和函数...

Global site tag (gtag.js) - Google Analytics