Skip to main content

Command Palette

Search for a command to run...

Code Smell 131 - Zero Argument Constructor

Objects created without arguments are often mutable and erratic

Published
2 min read
Code Smell 131 - Zero Argument Constructor
M

I’m a senior software engineer loving clean code, and declarative designs. S.O.L.I.D. and agile methodologies fan.

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

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

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


Don't worry about design, if you listen to your code a good design will appear...Listen to the technical people. If they are complaining about the difficulty of making changes, then take such complaints seriously and give them time to fix things.

Martin Fowler


This article is part of the CodeSmell Series.

Code Smells

Part 1 of 50

In this series, we will see several symptoms and situations that make us doubt the quality of our developments. We will present possible solutions. Most are just clues. They are no hard rules.