Let's say I'm writing a method that should return a Map. For instance:
public Map<String, Integer> foo() {
return new HashMap<String, Integer>();
}
After thinking about it for a while, I've decided that there is no reason to modify this Map once it is created. Thus, I would like to return an ImmutableMap.
public Map<String, Integer> foo() {
return ImmutableMap.of();
}
Do you think it is OK to leave the return type as a regular Map?
From one side, this exactly why interfaces were created for; to hide the implementation details.
On the other hand, if I'll leave it like this, other developers might miss the fact that this object is immutable. Thus, I won't achieve a major goal of immutable objects; to make the code more clear by minimizing the number of objects that can change. Even worst, after a while, someone might try to change this object, and this will result in a runtime error (The compiler will not warn about it).
WDYT?
Thanks.
Aucun commentaire:
Enregistrer un commentaire