Do not expose properties with writable fields without a chance to react on the writes.
From a chat with a co-worker a while ago:
I’m not against properties. Just something against properties that are objects with writeable fields.
So even if you expose such a property as read-only, it can still get its writeable fields overwritten.
That is a pain when those are part of the state of the underlying object.
In other words: encapsulate your state changes.
Here we solved it by making
- the type of the property immutable
- the property writeable
- react on state changes during the write
Proper encapsulation.
In this case it was a project mixing C# and Delphi, but you can easily apply the above to any language featuring classes and properties.
Another solution would have been to extend the type of the property so it can expose an event that fires during change. Much more convoluted.
Reference: | Do not expose properties with writeable fields without a chance to react on the writes. from our NCG partner Jeroen Pluimers at the The Wiert Corner blog. |