[Cuis-dev] BoxedMorph padding

Juan Vuletich juan at cuis.st
Sun Sep 8 05:43:35 PDT 2024


On 9/8/2024 7:22 AM, Luciano Notarfrancesco via Cuis-dev wrote:
> Interesting. I cannot give a very informed opinion because I don’t 
> program with Morphic very often, but I have some doubts about using 
> inheritance for this (and why not for other properties? ColoredMorph, 
> BorderedMorph, etc?). I wonder if it could be implemented with 
> properties instead (optional properties, that a morph might have or 
> not), or by composition. The reason to not use properties and make it 
> an instance variable is for speed?
>
>

Well, it is about code complexity. It is not about wether it is an ivar 
of a property, but about how much code is needed to implement it. I 
think that using composition would lead to a lot of additional code, 
that would take more time to browse and understand, and more stuff to 
hold in your head. I'd like to be proven wrong, though (with a specific 
implementation we can all look at and discuss!).

WRT colors and borders... Yes. Design is not an exact science at all. I 
think that conflating together "being a box aligned with coordinate 
axes", "having a fill color" and "having an (optional) colored border" 
together make for a compact way (minimum set of classes and methods) to 
do these three features, especially on a single inheritance system. Some 
morphs saying "I don't care about border, I'll ignore that" is less 
distracting that "yeah, I might have padding, go learn what that means, 
and how it is used elsewhere but not here, because I'll ignore it". So, 
it is a thin line.

The trade offs of single inheritance vs. multiple, traits, prototypes, 
composition, etc, have been the focus of discussions about dynamic 
language design for decades. Smalltalk is a single inheritance system, 
and my aim is to use that to get code that is clear, easy to understand 
and adapt to new knowledge as we learn. Software design is, of course, a 
creative activity, and (in my opinion) there are no rules carved on 
stone. Each time we need to consider the options and pick one.

And of course, the hierarchy is flexible enough for anyone wanting a 
specific subset of these features, or any other design approach, to 
build their own subhierarchy of LocatedMorph.

I hope this makes sense.

Thanks,

-- 
Juan Vuletich
cuis.st
github.com/jvuletich
researchgate.net/profile/Juan-Vuletich
independent.academia.edu/JuanVuletich
patents.justia.com/inventor/juan-manuel-vuletich
linkedin.com/in/juan-vuletich-75611b3
twitter.com/JuanVuletich



More information about the Cuis-dev mailing list