pcj icon indicating copy to clipboard operation
pcj copied to clipboard

Mutable classes should not inherit from Immutable ones

Open punkstarman opened this issue 8 years ago • 0 comments

A mutable class that inherits from an immutable one does not respect the Liskov Substitution Principle, a.k.a. the L in SOLID. An immutable object and its responses to getters can be cached indefinitely whereas a mutable object does not allow this.

For example, AbstractPersistentArray inherits from AbstractPersistentImmutableArray, adding setters that render what should be immutable, per the contract of AbstractPersistentImmutableArray.

This may just be a naming issue. If a suitable replacement for the term Immutable were found that doesn't imply a specific contract, for instance Readable.

punkstarman avatar Oct 18 '17 11:10 punkstarman