我不时看到的一个术语是"Cyclomatic Complexity".在这里,我看到了一些关于"如何计算语言X的CC"或"如何使用最小CC量来做Y"的问题,但我不确定我是否真的理解它是什么.
在NDepend网站上,我看到了一个解释基本上是"方法中的决策数量.每个if,for,&&等等都给CC增加+1"得分.)真的是吗?如果是,为什么是这很糟糕?我可以看到,人们可能希望保持if语句的数量相当低,以保持代码易于理解,但这真的是它的一切吗?
还是有一些更深层的概念呢?
我想知道是否有任何自动方法来确定(至少大致)给定函数的Big-O时间复杂度?
如果我绘制O(n)函数与O(n lg n)函数,我想我能够在视觉上确定哪个是哪个; 我认为必须有一些启发式解决方案,可以自动完成.
有任何想法吗?
编辑:我很高兴找到一个半自动化的解决方案,只是想知道是否有某种方法可以避免进行全手动分析.
大多数编程语言中方法的复杂性可以使用静态源代码分析器在圈复杂度中进行测量.是否有类似的度量标准来衡量SQL查询的复杂性?
它很简单,可以衡量返回查询所需的时间,但如果我只想量化查询的复杂程度呢?
[编辑/注意]虽然获得执行计划很有用,但在这种情况下,这并不一定是我想要识别的.我不是在寻找服务器执行查询的难度,我正在寻找一个指标来确定开发人员编写查询的难度,以及包含缺陷的可能性.
[编辑/注释2]不可否认,有时候测量复杂性没有用,但有时也是如此.有关该主题的进一步讨论,请参阅此问题.