[squeak-dev] Re: The Trunk: Morphic-ar.305.mcz

Juan Vuletich juan at jvuletich.org
Tue Jan 12 10:59:22 UTC 2010


Levente Uzonyi wrote:
> On Mon, 11 Jan 2010, Andreas Raab wrote:
>
>> Levente Uzonyi wrote:
>>> On Mon, 11 Jan 2010, Andreas Raab wrote:
>>>> Neither. For one thing, this method already says 
>>>> isScriptEditorMORPH so it obviously implies isMorph == true. (this 
>>>> would be different if it were isScriptEditor because there might be 
>>>> non-morph script editors).
>>>
>>> In this case all is*Morph methods should be moved to Object from Morph.
>>
>> Let's not split hairs here. Obviously such tests should be declared 
>> on the smallest reasonable scope. I'll remind you that I promoted 
>> that method only because it was actually sent to non-morphs. But at 
>> that point it's just silly to write, e.g., (obj isMorph and:[obj 
>> isBarMorph and:[obj isFooBarMorph]]) instead of obj isFooBarMorph.
>>
>>>> And it clearly can't be moved to the Etoys package - the whole 
>>>> purpose of the method is to make it possibly to unload Etoys and 
>>>> get isScriptEditorMorph == false for all other objects. This would 
>>>> blow up straight into your face if you'd move it to Etoys. Same 
>>>> goes for MorphExtension>>actorState, MorphExtension>>player etc. 
>>>> They all need to stay in the original packages since after 
>>>> unloading Etoys these messages will still be sent; they will just 
>>>> never return true / non-nil respectively.
>>>
>>> Of course moving it to EToys would require refactoring of the code.
>>
>> Knock yourself out. I think there's far bigger fish to fry with 
>> regards to unloading code but if that's what you'd like to work on be 
>> my guest.
>
> I'm not about to work on that, my list is already too long and my 
> knowledge about Morphic and EToys is not enough to do that properly. 
> But it would be good if
> - we could unload packages with all related code
> - Object protocol would be smaller

The real solution here is to send 'is: #ScriptEditorMorph' and implement

Object >> is: aSymbol
    "A means for cleanly replacing all isXXX like methods.
    Please use judiciously!
    Suggested by Igor Stasenko at
    
http://lists.squeakfoundation.org/pipermail/squeak-dev/2009-June/136793.html"

    ^false

ScriptEditorMorph >> is: aSymbol
    ^ aSymbol = #ScriptEditorMorph or: [ super is: aSymbol ]

In this way you easily get rid of all #isXXX methods (at least, all that 
just answer the true or false constants). Much more interesting: when 
you unload EToys there is no knowledge about ScriptEditorMorph in 
unrelated classes (such as Morph or Object).

Cheers,
Juan Vuletich

>
>
> Levente
>>
>> Cheers,
>>  - Andreas
>>
>>




More information about the Squeak-dev mailing list