Code Smell 109 - Automatic Properties
What happens if you combine 4 code smells?
TL;DR: Avoid Getters, Avoid Setters, Avoid Metaprogramming. Think about Behavior.
Problems
Information Hiding Violation
Fail Fast Principle violation
Duplicate code when setting properties
Solutions
Context
Setters and getters are a bad industry practice.
Many IDEs favor this code smell.
Some languages provide explicit support to build anemic models and DTOs.
Sample Code
Wrong
class Person
{
public string name
{ get; set; }
}
Right
class Person
{
private string name
public Person(string personName)
{
name = personName;
//imutable
//no getters, no setters
}
}
Detection
[X] Automatic
This is a language feature.
We should avoid immature languages or forbid their worst practices.
Tags
- Encapsulation
Conclusion
We need to think carefully before exposing our properties.
The first step is to stop thinking about properties and focus solely on behavior.
Relations
More Info
Credits
Nothing is harder than working under a tight deadline and still taking the time to clean up as you go.
Kent Beck
This article is part of the CodeSmell Series.