[squeak-dev] Re: Object>>#is:?
keith
keith_hodges at yahoo.co.uk
Fri Mar 5 13:32:54 UTC 2010
>> I got it; see my answer to Juan. I guess I'm just programming in
>> bad style: I do indeed consider that Object is part of my packages
>> (or, more accurately, that Object is not a forbidden place for my
>> package to go in).
>
> Hear hear. I've been wondering why people are so enthusiastic about
> #is: - good to see I'm not the only one.
>
> I think #isA: is fine, as an easy way to do #isKindOf: without a
> direct class reference. Being able to avoid class references makes
> it easier to avoid dependencies, which makes it easier to have a
> modular system.
>
> Juan's implementation of #is: puzzles me though. It replaces
> polymorphic dispatch with boolean logic. Good OO design generally
> goes in the opposite direction.
>
> Furthermore, Juan's version of #is: makes it more difficult to
> modularize the system. If I write a package that needs to add the
> concept of "greenness" to the system, I can add #isGreen extension
> methods wherever I want, without breaking any existing code.
> Somebody else can add #isPurple methods without breaking my code.
> But if we both need to override #is:, we have a gratuitous
> incompatibility.
>
> Note that #is: may work well in Cuis, but that's because Cuis is
> *not* a modular system.
>
> Finally, I also want to point out that "simpler" and "fewer methods"
> are not the same thing. Methods that answer booleans are dead simple
> to understand, no matter how many of them there are. A single #is:
> method increases incomplexity as the number of tests it encompasses
> increases.
>
> So, consider this moral support for Stéphane, since he seems to be
> beset on all sides. Also,
>
> +0 for #isA:
> -1 for #is:
>
> Colin
the askFor: version does support modularity. Users can askFor:
#isGreen. Suppliers can implement #isGreen, and you get your tagging
as well.
Smalltalk askFor: #isSqueak
regards
Keith
More information about the Squeak-dev
mailing list
|