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和Template Method模式的具体实现是我发现属于此类的两个示例。
在这种特定情况下,上面链接中的Mallet解释说,授予该特定bean LCOM4 = 1,因为getFullAddress被认为是bean访问器,并且LCOM4评分中不包含bean访问器。