【问题标题】:How does this code have LCOM4 value 1?此代码如何具有 LCOM4 值 1?
【发布时间】:2013-03-28 12:23:38
【问题描述】:

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

public class Client {

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

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

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

}

【问题讨论】:

    标签: java sonarqube code-metrics


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 几天前似乎 Nicolas Garcin asked 完全相同的问题 :) 如果你可以请除了那里的答案中的逻辑,bean 访问器被忽略,我可以接受你的答案。 T
    • @MiserableVariable,这是您需要的信息吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2023-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多