AW: where to put handlers?

Graham Samuel livfoss at mac.com
Wed Feb 6 16:52:36 EST 2008


On Wed, 06 Feb 2008 09:24:49 -0800, Richard Gaskin  
<ambassador at fourthworld.com> wrote:
>
> Devin Asay wrote:
>> I have two objections to placing all handlers high in the message
>> hierarchy.
>>
>> 1. It destroys the modularity/object-oriented-ish-ness of Revolution
>> stacks. If I create a particularly brilliant object (or at least a
>> complicated object that is "good enough") I often want to re-use it
>> in other projects. If I've separated the scripting from the objects
>> it becomes much more difficult.
>
> But sometimes that modest effort can pay big dividends down the road.
>
> For example, I have a table object that I use throughout many of the
> apps I write.  It has a lot of code, and parts are rather tricky,  
> so if
> I replicated it I'd have a lot of replicated code and if I need to
> change it I'd have a lot of work applying those changes to each  
> instance.
>
> So instead I have as little code as possible in the group itself, and
> put most of the code in a library.  There's only one copy of the code,
> and maintaining and enhancing it is a breeze.

Richard I think I see what you''re getting at. Sometimes in an  
approximately object-oriented way, I have found that I want different  
objects to react differently to the same message: for example in a  
simple circuit simulation that I wrote, there are different objects  
represented by groups or buttons, each of which represents an  
electrical component in the circuit. Having worked out that we had a  
live circuit, my app sent a message "apply voltage" to each component  
in turn. Within each individual component there was a behaviour (a  
method, I suppose) which applied just to that type - a light bulb  
would light, a motor would animate, etc. The method was hidden within  
the object rather than being further up the hierarchy were it had no  
business to be, as it were. This seemed to me a powerful technique,  
and indeed one which has far more general application than my simple  
example.

However I do see that if there was a lot of complex code needed e.g.  
to make the bulb light, and that at the same time there were several  
instances of that object, e.g. a lot of light bulbs, then that code  
should be in one place (a library) rather than being replicated in  
the body of each component. So I don't think the code in the kind of  
objects I described could be reduced to nothing (unless the library  
contained a lot of impenetrable switch statements to distinguish the  
different component cases). I guess this is what you mean by having  
"as little code as possible in the group itself". This is not the  
same as "no code in the group itself", which seems to me a key point.


Graham

                       ----------------------------------------
Graham Samuel / The Living Fossil Co. / UK and France




More information about the use-livecode mailing list