Remove Setting Method.
Problem
The value of a field should be set only when it’s created, and not change at any time after that.
Solution
So remove methods that set the field’s value.
##Example
Before
class Account {
private String id;
Account(String id) {
setId(id);
}
void setId(String arg) {
id = arg;
}
}After
class Account {
private final String id;
Account(String id) {
this.id = id;
}
}##Why Refactor
You want to prevent any changes to the value of a field.
##How to Refactor
-
The value of a field should be changeable only in the constructor. If the constructor doesn’t contain a parameter for setting the value, add one.
-
Find all setter calls.
-
If a setter call is located right after a call for the constructor of the current class, move its argument to the constructor call and remove the setter.
-
Replace setter calls in the constructor with direct access to the field.
-
-
Delete the setter.