我想开始衡量 Michael Feathers 所说的代码动荡,即churn vs. complex。
为此,我需要衡量 C++ 或 Java 文件的复杂性。所以我找到了几个测量圈复杂度(CC)的工具。他们都在功能或方法级别很好地测量了 CC。但是,我需要一个文件级别的指标,而他们在那里做得并不好。一个工具只返回文件中所有方法复杂度的平均值,另一个工具将整个文件视为一个巨大的方法,即计算整个文件中的所有决策点。
所以我做了一些研究,发现 McCabe 仅根据模块来定义 CC——他们将模块定义为函数——而不是文件(参见本演示文稿的幻灯片 20 和 30 )。我认为这是有道理的。
所以现在我要尝试弄清楚如何表示文件复杂性。我的想法是我应该对该文件使用最大方法 CC 。
关于这种方法的任何想法或任何其他建议?
谢谢!
肯
这是我的数据框中的数据示例:
test = pd.DataFrame({
'month': [1,2,3,4,5,6,7,8,9],
'new': [23,45,67,89,12,34,56,90,12],
'drop': [2,4,7,9,1,4,6,9,1],
})
month new drop
0 1 23 2
1 2 45 4
2 3 67 7
3 4 89 9
4 5 12 1
5 6 34 4
6 7 56 6
7 8 90 9
8 9 12 1
Run Code Online (Sandbox Code Playgroud)
我需要计算每月的流失率。我需要对列中的 2 行求和new,然后将值drop除以这个总和(以 % 为单位)。
month 1: 2*100/23
month 2: 4*100/(23+45-2)
month 3: 7*100/(23+45+67-2-4)
etc.
Run Code Online (Sandbox Code Playgroud)
任何人都可以提出一种优雅的方式来做到这一点吗?