On 4/5/07, Martin Cooper <[EMAIL PROTECTED]> wrote:
On 4/5/07, Nathan Bubna <[EMAIL PROTECTED]> wrote:
>
> On 4/5/07, Greg Reddin <[EMAIL PROTECTED]> wrote:
> > On 4/5/07, Martin Cooper <[EMAIL PROTECTED]> wrote:
> > >
> > > 2. The "public" redundant modifier is declared illegal in that
> > > > checkstyle file, but I think that it is not so bad.
> > >
> > >
> > > Here I disagree. IMHO, using 'public' in interfaces demonstrates a
> lack of
> > > clarity. It constitutes "noise" in the interface definition that
> hinders
> > > rapid comprehension. When someone reads through a set of interfaces
> and
> > > sees
> > > 'public' scattered around, they're likely to stop and wonder if the
> author
> > > had some purpose to specifying 'public' that they should try to
> > > understand,
> > > when in reality the author was simply not thinking clearly enough to
> > > translate their thoughts into accurate interface definitions. We
> should
> > > always strive for maximum communication bandwidth, and not clutter the
> > > code
> > > with things that readers will trip over and have to stop and wonder
> about.
>
> -0 hindering rapid comprehension is *highly* subjective. it depends
> on what you are trying to comprehend and what you are used to. in
> this instance that is apparently different for you and me. :)
>
> >
> > Interesting. I've always preferred to be explicit and express things
> that
> > are true by default.
>
> agreed. i also like that the method signature looks like it does in
> the implementation class. i prefer the consistency...
This is a perfect demonstration of my point. Creating interfaces is a design
activity; creating implementation classes is an implementation activity.
They *should* be distinct, and you *should* be thinking differently when you
write them. Making them look the same confuses these two very different
activities and can lead to poor interface design.
heh. seems like an entirely new point to me, probably the first time
i've heard the phrase "implementation activity", and i don't agree
with the conclusion that declaring 'public' has anything to do with
poor interface design. :) still, i can appreciate wanting to further
differentiate between the two types of classes, and since it's appears
to be a somewhat religious issue to you and no one else cares much,
i'll back your play and vote for not allowing unnecessary (and
potentially threatening) 'public' modifiers! i'll adjust quite quickly
and might even come to value it too. :)
--
Martin Cooper
> For example, I use "this." a lot (though probably not
> > consistently enough to communicate anything). I can see your point but
> the
> > lack of the public modifier would "hinder rapid comprehension" for me,
> just
> > because I'm used to seeing it there. (To be real honest I didn't
> realize it
> > was defaulted until I read this - though it makes sense).
> >
> > So should we cater to those who don't know the language well enough or
> cater
> > to those who prefer language purit? Personally, I still prefer the
> former
> > because I like being explicit, but I won't die on that hill. I'm
> willing to
> > be convinced otherwise :-)
>
> i don't really care. to me it's a fairly trivial preference. and
> whatever "hindrance" the lack of "public" might be to my comprehension
> is entirely negligible. :)
>
> > Greg
> >
>