insert 2 cents here...

I agree that the 'I' prefix is annoying to have to type over and over
again since you end up using the interface frequently. It doesn't
usually matter if you have to alter the name of an implementation class
to differentiate. You should be using the implemenation via the
interface, right? So you type that more often.

Also, I enjoy those underscores tremendously. ;)  It makes it obvious
it's a member variable not a local or a method parameter. Also, I find
the usual:
  this.someValue = someValue;
Very annoying and much prefer:
  _someValue = someValue;

And of course, braces must go on the next line...

enjoy,
eli

Jamie wrote:

LOL. And +1 ;-)

Jamie

Viktor Szathmary wrote:

Hi,

let me put some more fuel on the flamewar :) I'm Hungarian, and I'm
pretty sure Charles Simonyi would agree that, with a language like
Java, Hungarian notation is pointless... and the underscore notation
in Tapestry is in fact hideous...

I personally like the I prefix for interfaces, but can live without
them.. If you don't use that prefix, you'll end up suffixing Impl to a
bunch of simple classes... so whatever, I don't really var, just don't
break my existing code for the sake of prettier names, that's all I
care about :)

Oh, and the curly braces should start on the same line... and I like
tabs... 4 character wide... That's the One True Way :)

regards,
  viktor

On 4/22/05, Erik Hatcher <[EMAIL PROTECTED]> wrote:

On Apr 22, 2005, at 7:05 AM, Mind Bridge wrote:

By the very same logic we should also remove the '_' prefix from
member variables as well and make them look the same as local
variables, no?


Well, I certainly don't use _ prefixes :)  I think its hideous.

But the difference is that the I-prefixes are external API whereas the
_junk is internal.  The external interface is what folks see and use.
Folks that just look at tapestry-3.xx.jar do not see the internal
_stuff.


Hungarian notation does have its uses.


Bah!  Not in Java it doesn't.


You say that it is redundant to have 'I' when you already have
declared the type as an 'interface'. The problem is that 'interface'
is declared in another file. Having to load/understand that other file
in addition to what you are doing at the moment is problematic.


I don't buy it.  It is not problematic at all.  Why does anyone need to
know that there is an interface or a class under it anyway?  Show me a
use case where it matters.  It certainly doesn't matter what I get back
here:

       IPage page = cycle.getPage("Foo")

Why does the developer using this construct need to know or even care
what is returned?


In a company that can standardise on an IDE (or a set of IDEs) it
probably makes sense to relax rules like that a little bit as the IDEs
can compensate. I strongly disagree that this can be done in an
open-source project when there is a good alternative however. At the
very least that places a limitation on the people who join and the
tools they employ.


Show me one other Java open source project that employs Hungarian
syntax.  None that I use but Tapestry.


I agree that the matter is more or less closed, as Howard has already
decided to remove the 'I's from Tapestry and given that he writes the
majority of the code, his opinion does matter a lot. I should have
spoken out when there was a vote on that in tapestry-dev (was there
one actually?). Nevertheless, what I am saying may be of consideration
in the future.


I respect your opinions as much as Howard's, but I still reserve the
right to disagree :)  Hungarian notation seemed to have it's place in C
coding, but only in Tapestry have I seen it in Java.  Should we start
calling variables like this:

       String sName = "Erik";

too?!  ;)

       Erik




Erik Hatcher wrote:


On Apr 22, 2005, at 5:53 AM, Mind Bridge wrote:


Hi,

Do you have to 'implement' or 'extend' a particular type? Can you
have multiple inheritance with that type or not? Can you instantiate
it?

The answers of those questions are clear with 'IPage'. If 'Page' can
be both a class or an interface, you have to look through the code
to find that out.

Interfaces and classes are two rather different concepts. It seems
to me that they need to be distinguished clearly. Removing the 'I'
in front of the name and the characters that saves are a much
smaller win compared to the loss of clarity and the time wasted in
figuring out what can be done with that type.



I disagree. Putting an "I" in front of something that is declared as an "interface" already is redundant. My IDEs (I juggle between Eclipse and IDEA) both easily show me what kind of beast a particular reference is if I want to know. In most cases its irrelevant whether you're dealing with one or the other. Tapestry is the exception here - no other API I work with uses this old-school Hungarian notation.

It's not really worth dwelling on, though.  Howard has already agreed
that moving forward the I-prefix will be dropped for new code.  The
question now is what to do about the existing interfaces.  Putting a
cleaner name in interface hierarchy (RequestCycle extends
IRequestCycle, or vice versa) and deprecating the I-prefixed stuff
seems to make sense.  This will be ugly though - as method signatures
using those interfaces will need to be duplicated with the old one
deprecated - right?

   Erik


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]







-- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.308 / Virus Database: 266.10.2 - Release Date: 4/21/2005


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to