Когда я начинал, я все еще находился под сильным влиянием HIDE YOUR DATA OO PRINCIPALS LOL. Я бы сидел и размышлял о том, что произойдет, если кто-нибудь изменит состояние одного из объектов, выставленных в собственность. Должен ли я заставить их читать только для внешних абонентов? Я не должен выставлять их вообще?
Коллекции довели эти тревоги до крайности. Я имею в виду, что кто-то может удалить все объекты в коллекции, пока я не смотрю!
В конце концов я понял, что если ваши объекты так сильно зависят от их внешне видимых свойств и их типов, что, если кто-то прикоснется к ним в плохом месте, вы начнете бумить, ваша архитектура будет испорчена.
Существуют веские причины сделать ваши внешние свойства доступными только для чтения, а их типы неизменяемыми. Но это угловой случай, а не типичный, imho.