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

Miguel Enrique Cobá Martinez miguel.coba at gmail.com
Tue Jan 12 16:01:16 UTC 2010


El mar, 12-01-2010 a las 07:59 -0300, Juan Vuletich escribió:
> 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).


Cool! Everyday we learn something new. Thanks to Igor.

Cheers
> 
> Cheers,
> Juan Vuletich
> 
> >
> >
> > Levente
> >>
> >> Cheers,
> >>  - Andreas
> >>
> >>
> 
> 

-- 
Miguel Cobá
http://miguel.leugim.com.mx




More information about the Squeak-dev mailing list