java - 这段代码如何使 LCOM4 值为 1?

标签 java sonarqube code-metrics

sonar documentation下面显示了 LCOM4 = 1 的重构代码。但在我看来,它应该是 2,因为 getFullName 之间没有内聚力。和getFullAddress 。我错过了什么?

public class Client {

  public String firstname;
  public String lastname;
  public Address address;

  public String getFullName() {
    return firstname + " " + lastname;
  }

  public String getFullAddress() {
    return address.getFullAddress();
  }

}

最佳答案

您似乎发现了文档问题!根据 Freddy Mallet 的说法,这不是 LCOM4 重构的一个很好的例子,将会被修复:

http://sonar.15.n6.nabble.com/Question-about-LCOM4-td5009876.html

一般来说,有一些数据结构不太适合 LCOM4 算法,在做出重构决策时记住这一点很重要。 POJO 和模板方法模式的具体实现是我发现属于此类别的两个示例。

在此特定情况下,上述链接中的 Mallet 解释说该特定 bean 被授予 LCOM4=1,因为 getFullAddress 被视为 bean 访问器,并且 bean 访问器被排除在 LCOM4 评分之外。

关于java - 这段代码如何使 LCOM4 值为 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15844904/

相关文章:

java - 在不丢失数据的情况下将 byte[] 解密回 String

java - 如何在 SonarCloud 上解决此问题?

python - Poetry 和 Pytest-cov with Sonar : how to reconcile the references?

dependencies - typescript 中有没有什么好的静态代码分析工具?

c# - 使用 CodeDom 分析代码结构?

visual-studio-2010 - Visual Studios 如何计算可维护性指数?

java - ModCluster 配置在负载已满时丢弃请求

java - 关于带有数组对象的构造函数的非常简单的问题

java - 构建器模式精度

java - 源码目录与包声明不对应