Python pymetrics的输出告诉了我什么?

Python pymetrics的输出告诉了我什么?,python,metrics,Python,Metrics,python度量代码可用于分析代码文件的复杂性。它们创建了两个不同的指标: 函数和类的McCabe复杂性度量 整个文件的cocomo2的SLOC度量 我想知道这些指标的数值是什么意思,而不是它们的定义。“1”的值是什么意思?“5”是多少?“10”是多少?高是好还是低?什么数值代表好代码,什么才是真正的坏代码?在互联网上搜索可以提供一些信息,但我不确定分类是指指标(1)还是指标(2)。我想对这两个数字都有一个含义。我认为在你的问题中有一个有问题的假设,即好的代码对于某个度量具有特定的值。你不能用一

python度量代码可用于分析代码文件的复杂性。它们创建了两个不同的指标:

  • 函数和类的McCabe复杂性度量
  • 整个文件的
    cocomo2的SLOC度量

  • 我想知道这些指标的数值是什么意思,而不是它们的定义。“1”的值是什么意思?“5”是多少?“10”是多少?高是好还是低?什么数值代表好代码,什么才是真正的坏代码?在互联网上搜索可以提供一些信息,但我不确定分类是指指标(1)还是指标(2)。我想对这两个数字都有一个含义。

    我认为在你的问题中有一个有问题的假设,即好的代码对于某个度量具有特定的值。你不能用一个单一的标准来衡量代码的质量,它是事物的组合,并且高度依赖于上下文。真正超高效的代码通常有点难以理解,这会使它成为糟糕的代码吗

    在70年代,IBM决定用他们产生的代码行(SLOC)来衡量程序员的质量。不用说,这导致了一些非常冗长和愚蠢的代码

    如果您想了解代码的质量,那么您需要的是其他开发人员的关注。最好是比你更有经验的开发人员。友好的代码检查对于学习来说是非常好的,它还将迫使您思考为什么您会以您这样的方式完成某件事情,而不是以其他方式完成。幸运的是,stackexchange提供了准确的

    来自维基百科

    圈复杂度(或条件复杂度)是一种软件度量 (测量)。它由Thomas J.McCabe,Sr.于1976年和 用于指示程序的复杂性。它直接测量 通过程序源的线性独立路径数 代码。这个概念虽然不是方法,但有点类似于 由弗莱希·金凯(Flesch-Kincaid)衡量的一般文本复杂性 可读性测试。 ... 一段源代码的圈复杂度是通过源代码的线性独立路径数。例如,如果源代码不包含if语句或For循环之类的决策点,那么复杂性将为1,因为代码中只有一条路径。如果代码有一个包含单个条件的If语句,则代码中会有两条路径,一条路径的If语句求值为TRUE,另一条路径的If语句求值为FALSE。

    你不能说
    1
    2
    好,这取决于上下文(你在写什么语言,为谁写代码等等)。您应该将圈复杂度值看作是给您一个提示,告诉您理解代码的控制流是多么容易。大量嵌套的
    if
    语句将导致较高的CC。所以理想情况下,你的CC为1(每个函数可能),也就是说,一个函数以一种方式做一件事,而不是其他方式,但显然这并不总是可能的。您必须在上下文中评估度量的任何值

    在用相同语言编写的其他库中,您倾向于看到什么样的值?不过我不能给你一个数字(对不起)。我可以说CC值15可能有点过头了,代码应该重构。这是执行脚本/函数的15种不同方式。在测试一个函数时,您需要考虑15种不同的情况,不要忘记所有可能导致这15种情况不起作用的因素。您需要对它们进行另一个单元测试,以及值的组合(您得到了要点)

    源代码行(SLOC)是一种用于度量 通过计算文本中的行数来调整计算机程序的大小 程序源代码的一部分。SLOC通常用于预测 开发计划所需的工作量,以及 一旦 软件是生产出来的

    构造成本模型(COCOMO)是一种算法软件成本模型 Barry W.Boehm开发的估算模型。该模型使用基本的 带有从历史数据中导出的参数的回归公式 项目数据和当前项目特征

    另一方面,COCOMO并不是真正衡量代码质量,它是一种软件项目成本模型(COCOMO II),是最近(90年代后)软件项目的更新

    有这样的说法吗

    COCOMO II实际上有三种不同的型号:

    •应用程序组合模型-适用于使用现代GUI builder工具构建的项目。基于新的对象点

    •早期设计模型-在确定项目的整个架构之前,您可以使用该模型粗略估计项目的成本和持续时间。它使用了一小部分新的成本动因和新的估算公式。基于未调整的功能点KSLOC

    •后体系结构模型-这是最详细的COCOMO II模型。在开发项目的总体架构之后,您将使用它。它有新的成本 驱动程序、新的行计数规则和新的方程式


    一个功能点是一个功能单元,KSLOC是数千行代码。因此,COCOMO模型用于估算软件项目的成本、时间、所需资源等,而不是评估代码的质量。

    并且?正如我在问题中所解释的,通过pymetrics,我得到了两组数字。我只能“猜测”维基百科条目指的是案例(1)。这仍然不能回答我的问题,1的值意味着什么。v怎么样