SonarQube:认证认知复杂性

Pix*_*ler 4 sonarqube sonarqube-web

我理解认知复杂性是什么以及它将如何计算,但我现在不知道如何确定该度量的好价值,因此我的代码应该是多么复杂.我需要客观的方法来估计它,而不是相互比较项目.一种类似"复杂性/行代码"之类的公式.或者,如果我为大项目定义质量门,我该如何计算它的值.

G. *_*eam 16

在方法级别,建议最大值为15.

在课程级别,它取决于您对包中的期望.

例如,在一个只包含字段和简单getter或setter的类的包中,认知复杂度超过0(5?10?)的类可能值得另外看.

另一方面,在包含业务逻辑类的包中,类得分> = ... 150(?)可能表示是时候查看拆分类了.

就项目的限制而言,这是无法回答的,并让我们回到弗雷德布鲁克斯的基本与偶然的复杂性.基本上,完成工作需要一定的逻辑.超出此范围的复杂性是偶然的,理论上可以消除.弄清楚两者之间的差异是问题的关键,在寻找偶然的复杂性时,我会集中精力于复杂性超过默认阈值15的方法.

要回答你的初步问题,"应用程序的限制应该是什么?",我会说应该没有.因为简单的计算器应用程序的基本复杂性远远低于航天飞机上的程序.如果你试图使航天飞机计划符合计算器阈值,你绝对会打破一些东西.

(披露:我是认知复杂性的主要作者)

  • @AshishShetkar讨论了一些重构方法[在此视频中](https://www.youtube.com/watch?v=x5V2nvxco90&t=17m) (2认同)