Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current ·  View Page History

What is LCOM4?

Cohesion is the degree to which the methods of a single class are tight together. When two methods in a class do not use a common attribute or a common method, it means that they share nothing and should probably not belong to the same class to respect the Single Responsibility Principle. In other words you can split your class into several new classes to gain modularity at class level.

Sonar computes the LCOM4 (Lack of Cohesion of Methods) metric based on Hitz & Montazeri. Here is a good introduction: http://www.aivosto.com/project/help/pm-oo-cohesion.html#LCOM4.

The best value for this metric is 1.

How to Hunt for Bad LCOM4?

Add the Chidamber & Kemerer widget on your dashboard:

Drill down:

Example

Bad LCOM4

Project with one single class: Client.

 

Client

 

The project has an average LCOM4 value of 2:

The Client class has an LCOM4 value of 2:

It shows that there should be two different objects: Client and Address.

Good LCOM4 after Refactoring

After creating a new Address class and creating an Address object in Client:

Address
Client

The LCOM4 of the project is down to the best value:

Thanks to the fact that Client and Address have an LCOM4 value of 1:

Related Topics

See the following blog post: Clean Up Design at Class Level with Sonar.

 

Labels
  • None