【问题标题】:Inner functions in python and branch counting by pylintpython中的内部函数和pylint的分支计数
【发布时间】:2021-06-02 11:14:33
【问题描述】:

pythons 中的内部函数给我们带来以下好处:

  • 在功能级别提供封装。
  • 提供对封闭范围变量的访问,而不作为参数传递。
  • 避免较大命名空间中的污染
  • 允许我们在函数/类(装饰器)上添加包装器

一个函数可以有多个内部函数。

pylint 计算函数中的分支。如果一个函数有多个内部函数,那么计数将是所有内部函数以及外部函数的聚合分支计数值。

我们在 pylint 中有任何配置选项来不聚合内部函数分支计数吗?

如果是,请让我知道并忽略帖子的其余部分。

限制分支数的原因可能是以下之一:

  • 功能不仅仅做一件事。
  • 代码变得太复杂而无法阅读。

内部函数已经在处理这些事情(以及它自己的好处)

  • 以内部函数的形式存在关注点分离。
  • 代码仍然简单易懂。

那么为什么 pylint 会聚合这些计数器?

【问题讨论】:

    标签: python pylint


    【解决方案1】:

    Pylint 使用 mac cabe 来计算圈复杂度。不计算内部函数被认为与 mac cab 指标所做的精神不符in this issue

    基于计算的精神(即,降低例程的复杂性 - 也就是函数),我开始怀疑添加标志是否会抵消运行 mccabe 的好处。具体来说,嵌套函数可能不会对函数中的逻辑分支产生影响,但是,就阅读相同代码时考虑到其他人而言,它们确实会增加复杂性。此外,如果您查看 mccabe as a calculation of the number of different tests,您可能需要编写来练习例程/函数中的所有代码,那么您还必须考虑嵌套函数。

    【讨论】:

      猜你喜欢
      • 2013-10-20
      • 1970-01-01
      • 2015-10-16
      • 2021-06-25
      • 1970-01-01
      • 2017-01-06
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多