If someone uses your class by using instVarNamed, they deserve any pain that results. Your job is to publish a clean public interface to your class, their job is to use that interface.
On May 13, 2014, at 10:29 AM, Chris Muller <asquea...@gmail.com> wrote: > You could answer a copy of the collection, so it won't matter > internally if they try to add to it. Or you could wrap the collection > with operations too. > > However, doing that, I suppose someone could still write, "(someObject > instVarNamed: 'internalCollection') add: junk. So, why bother? > > Writing code that does nothing more than try to "protect" your > program-state from bad code elsewhere is like inflicting static-typing > on yourself. Easier to simply not write the bad code in the first > place. :) > > On Tue, May 13, 2014 at 4:53 AM, Yuriy Tymchuk <yuriy.tymc...@me.com> wrote: >> Hi, >> >> sorry if there was already this question, but I couldn’t find it anywhere. >> >> I’m looking in the OO-design concerns and it seams that Java guys are crazy >> about returning the collection that is used for state of an objects. The >> only acceptable option is returning it in the immutable wrapper. As far as I >> know, pharo does not have immutable collections (except from intervals and >> symbols). Are we missing something important, or there is a philosophy >> behind the building blocks we have now, and the design we come up while >> using them. >> >> Cheers. >> Uko >