认知复杂性及其对代码的影响

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认知复杂性及其对代码的影响相关的知识,希望对你有一定的参考价值。

W.r.t对于其中一个java项目,我们最近开始使用SonarLint。代码分析的输出显示了太多关键代码异味警报。

Critical code smell: Refactor this method to reduce its Cognitive Complexity.

我听说过Cyclomatic Complexity而不是认知复杂性。我对小组的问题:

  • 认知复杂性是行业标准吗?
  • 除了可读性和可维护性之外,认知复杂性对代码的影响。
  • 认知复杂性是否仅适用于方法或代码的任何其他部分?
  • 认知复杂性所依赖的任何特定标准?
  • 提高代码认知复杂性的最佳实践。

我已经通过这个link但无法得到我所有问题的答案。

提前致谢。

答案

人类可以很容易地记住7个实体+/- 2(wikipedia)。当有人需要阅读代码时,他们可能会遇到这个限制。有时会有太多的局部变量需要跟踪,或者if / for语句太多。在所有情况下,它都更难理解代码应该做什么,因为很难保持算法的精神图像。

行业标准:不。

可读性和可维护性:调试/改进简单易读的代码更容易。

适用于方法或其他部分:某些人可能想要了解的一切。如果你试图解释你的设计,我需要跟踪20多个课程,我会迷失方向。如果我需要快速使用你的界面,但我需要记住10位状态,我将无法做到。

它依赖的任何特定标准:理解代码需要记住的事物数量。

最佳实践:创建更多更好的功能。将相关概念提取到组/包中。减少代码中嵌套级别的数量(如果您阅读嵌套代码,则需要记住导致您的条件)。在任何一点减少使用中的变量数量(与提取函数一起使用效果很好)。

以上是关于认知复杂性及其对代码的影响的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?

图像数据矩阵中的偏移值及其对整数值的影响

微服务基础概念认知总结

以下代码片段的算法复杂度

关于代码片段的时间复杂度

以下代码片段的时间复杂度是多少?