[squeak-dev] The Trunk: Kernel-cmm.1113.mcz
Chris Muller
asqueaker at gmail.com
Fri Sep 1 17:25:11 UTC 2017
> It doesn't matter if it's private or not, because that can be changed.
> What I don't understand is the need for an additional wrapper method.
I suppose you could make this same argument against #pin and #unpin.
> If you think #pinned: is needed, then it should replace #setPinned:.
The separation here was due only to the fact that setPinned: is a
lever that rests directly against the "metal" and I think its
preferable to insulate user-level API's from that.
>> I'd recommend using #pin and #unpin if wherever possible, but there
>> have been enough cases where various method pairs (i.e., #lock/unlock,
>> #show/hide, #action/unaction, etc.) where it can't be known which one
>> is needed until runtime.
>
>
> I just can't imagine a real-world situation where you'd want to pin or unpin
> an object based on a condition.
What about #isPinned? Can you imagine a situation where you'd ever
need that? Maybe should remove that one too? And why does the
primitive need to answer whether it *was* pinned?
I think a robustly-designed API becomes more possible when think about
possible usages beyond FFI calls.
I once thought I would never need to call "Smalltalk garbageCollect"
but, eventually, in one app I ran into a scaling issue where I
actually needed to do it to improve performance.
Having said all this, I have had times when I've wanted to purposely
restrict an API to one specific use-case, and require code changes for
it to grow beyond that use-case, so as to force proper consideration.
I went ahead and reverted my changes.
More information about the Squeak-dev
mailing list
|