1

声纳文档将以下内容显示为 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();
  }

}
4

1 回答 1

2

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

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

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

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

于 2013-04-05T23:07:21.297 回答