Btw, all this comes across like 'bitching' and that is not my
intention. Sorry about that.
I think all-in-all, Pivot is not by any means worse than anything
comparable, and pushing ahead the way you have done is really
appreciated. Perfection is not always a goal in itself.

Keep up the good work.

Cheers

On Sat, Sep 19, 2009 at 3:50 PM, Niclas Hedhman <[email protected]> wrote:
> On Fri, Sep 18, 2009 at 10:21 PM, Greg Brown <[email protected]> wrote:
>>> many classes are "polluted" by properties and view/model interaction, and
>>> view styles are also APIs, even though the methods are intended to be
>>> hidden. This is the nature of the "accepted approach" and perhaps not too
>>> much can be done about it.
>>
>> I'm not sure exactly what you mean by "polluted" - can you clarify? I
>> actually think the APIs are very clear, especially now that we have been
>> over them 2 or 3 times.
>
> :-)  I am a bit of API zealot, so I don't expect you to agree with me,
> and I don't know where to start. To sample the obvious, Component has
> for instance the following methods;
>
> public Point mapPointFromAncestor(Container ancestor, int x, int y)
> public Point mapPointToAncestor(Container ancestor, int x, int y)
> public Display getDisplay()
> public Graphics2D getGraphics()
>
> I can't for a second figure out why these are 'public' and should
> probably be 'protected'.
>
> There is a method
>
> public Skin getSkin()
>
> Is it part of the API (or not) that I call getSkin(), cast it to the
> implementation and invokes methods on it directly? If not, it
> shouldn't be public. If it is, you just added all the public methods
> of all the view classes to be part of the API.
>
> All containers have a method;
>
> public final int add(Component component)
>
> yet, many containers are not using it as its primary populator, off my
> head I recall Accordion.getPanels().add() or something like that. If
> only a small number of Containers are actually using the add(), it
> should exist at that level, IMHO.
>
>
> Then there is stuff I am less sure about;
>
> Component.validate() sounds like an internal method between a
> Container and its children.
> Component.paint( Graphics2D graphics ) --> same thing.
>
> Component.getAttributes() --> is 'protected' but none of the existing
> sub-components calls it. Instead it is called from 'package private'
> visibility of Accordion, TabPane, TablePane and Form. So that is
> indication that scope visibility is incorrect (I could not have
> implemented Accordion outside the package). Also, Attributes sound
> like something that should be properly typed and not a 'guess my type'
> Object.
>
> And this is just scratching on the surface. A lot of the issues could
> have been solved with using interfaces instead of classes, where the
> implementation details in the class can cast to its known types for
> access. Some issues should perhaps be solved via an injection
> mechanism.
>
>
> So, nah, you won't get an A for API Design... ;-)
>
>
> Cheers
> --
> Niclas Hedhman, Software Developer
> http://www.qi4j.org - New Energy for Java
>
> I  live here; http://tinyurl.com/2qq9er
> I  work here; http://tinyurl.com/2ymelc
> I relax here; http://tinyurl.com/2cgsug
>



-- 
Niclas Hedhman, Software Developer
http://www.qi4j.org - New Energy for Java

I  live here; http://tinyurl.com/2qq9er
I  work here; http://tinyurl.com/2ymelc
I relax here; http://tinyurl.com/2cgsug

Reply via email to