DEV Community

Cover image for Code Smell 131 - Zero Argument Constructor
Maxi Contieri
Maxi Contieri

Posted on • Originally published at maximilianocontieri.com

Code Smell 131 - Zero Argument Constructor

Objects created without arguments are often mutable and erratic

TL;DR: Pass all your essential arguments when creating objects.

Problems

Solutions

  1. Use one complete and single constructor.

  2. Avoid Setters and Getters

Context

It is common usage using a zero-argument constructor and a bunch of setters to change it.

Beans is a well-known example of this code smell.

Sample Code

Wrong

 public Person();

// Anemic and mutable
Enter fullscreen mode Exit fullscreen mode

Right

public Person(String name, int age){
     this.name = name;
     this.age = age;
     } 
 }

// We 'pass' the essence to the object 
// So it does not mutate
Enter fullscreen mode Exit fullscreen mode

Detection

[X] Automatic

We can check all constructors, but there are some false positives.

Stateless objects are a valid example.

Tags

  • Mutability

Conclusion

Empty constructors are mutability hints and accidental implementation issues.

We need to research usages to improve our solutions.

Relations

More Info

Credits

Photo by Ade Adebowale on Unsplash