Hello guys
We were browsing code with marcus and I realized something quite funny
about Morphic.
Morphic is somehow close to seaside for the following point:
There is a list that contains the children. In Seaside you have to
return a list containing the children
components too. Now this is really interesting to see that a lot of
complexity in Morphic code
comes from the fact that the programmers avoided to have an instance
variable for an element
to the pretext that the element was already in the submorphs list.
Then you end up with code like
label: aString
| oldLabel m |
(oldLabel := self findA: StringMorph)
ifNotNil: [oldLabel delete].
m := StringMorph contents: aString font: TextStyle defaultFont.
self extent: m extent + (borderWidth + 6).
m position: self center - (m extent // 2).
self addMorph: m.
m lock
label
| s |
s := ''.
self allMorphsDo: [:m | (m isKindOf: StringMorph) ifTrue: [s := m
contents]].
^ s
instead of
label
^ label
label: aString
....
where you have to query the submorph of the right kind....
Marcus was mentioning to me that Morphic is a bit like applying
GraphTraversal that the law of demeter
guy loves so much. And we see the results, an ugly code all over the
places.
So I will certainly play a bit with this design difference to see what
it makes. But I'm sure now it makes a big difference.
stef
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project