Avoid combining get and add operations on lists
JavaDemetergetter
Modifying a list returned by a getter is a bad pratice.
The returned list might be null, a copy or immutable.
That's why the modification should be encapsulated.
This practice was created by Arolla.
Examples
Example 1:
Negative
Incorrect implementation that violates the practice.
package dev.best.practices;
import java.util.ArrayList;
import java.util.List;
public class Zoo {
private final List<Animal> animals = new ArrayList<>();
public static Zoo create() {
final Zoo zoo = new Zoo();
zoo.getAnimals().add(new Animal("toto", Species.DOG));
zoo.getAnimals().add(new Animal("medor", Species.DOG));
zoo.getAnimals().add(new Animal("kiki", Species.CAT));
zoo.getAnimals().add(new Animal("nemo", Species.FISH));
return zoo;
}
public List<Animal> getAnimals() {
return animals;
}
public static class Animal {
private final String name;
private final Species species;
public Animal(String name, Species species) {
this.name = name;
this.species = species;
}
public boolean hasSpecies(Species species) {
return this.species == species;
}
}
public enum Species {
CAT, DOG, FISH, SNAKE, SHEEP, COW, LION, ELEPHANT
}
}