I wasn't suggesting blind removal. IMO final should rarely ever be
used, for open source it almost never does anyone any good. I would
suggest a renderer-by-renderer approach though, not method-by-method
as that would take too long to file that many bugs.

Right now Trinidad and facelets are by far the most inflexible open
source code I have worked with. Both over-use final and both assume
that out-of-the box behavior is enough fore everyone's needs. For
Trinidad renderers, many only expose encodeAll as protected then do
most of the work in private methods. As a result a person needing to
customize a renderer has to use copy & paste (generate an entirely new
renderer using the source of the core one) which really sucks for
maintenance.

-Andrew

On Thu, Apr 10, 2008 at 1:48 PM, Andy Schwartz
<[EMAIL PROTECTED]> wrote:
> On Thu, Apr 10, 2008 at 1:36 PM, Andrew Robinson
>  <[EMAIL PROTECTED]> wrote:
>  > +1 for:
>  >  - removing most final modifiers
>  >  - going from private to protected on most renderer methods
>
>  Not sure how much my opinion counts, since I am a new face around
>  here, but I am -1 on blindly removing most final modifiers, or
>  promoting most private methods to protected.  Methods may have been
>  intentionally marked as final by the Renderer author, eg. to enforce
>  the fact that the method is itself a convenience for some other method
>  which provides the actual implementation.  And many if not most of the
>  private methods are not necessarily good additions to the protected
>  API, since they were not designed with extensibility in mind.
>
>  I understand the desire for more flexibility, so if the community
>  feels this is important, then let's solve the problem.  However, I
>  don't think that the way to achieve this goal is by sacrificing basic
>  design principles.  If we want better protected APIs, then let's work
>  on adding them - arbitrarily removing most final/private modifiers
>  isn't the way to get there.
>
>  BTW, (referring back to early comments on this thread) I don't see how
>  this is an open vs. closed source issue.  The same API design
>  principles apply to both cases.
>
>
>  >  - and adding more customization hooks in the renderers
>
>  Now this sounds like a better idea.  In some cases this may mean
>  making existing final/private  methods non-final/protected, but we
>  should put some thought into which cases require this rather than
>  doing this in an arbitrary manner.
>
>  Andy
>

Reply via email to