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/