[...]
Naming a type (forget class or interface - think "type") with
implementation details ("I" for interface, "Impl" for class) violates
the O-O principle to hide implementation and is a stupid idea. It
benefits nothing, it imposes extra work if you change implementation
(one of the motivators for black-boxing implementation) to avoid
misleading nomenclature, and it bespeaks a lack of critical-thinking
capacity.
See Robin? Told you so.
Personally, given the fundamental distinction between how one can use an
interface and a class (and in particular, the inheritability of either),
I see nothing wrong with 'I' for interface, and even find it helpful. I
also feel I have above-average critical-thinking capacity, though
obviously Lew disagrees.
But he and others will impugn whomever they need to in order to support
their blind faith in Sun's conventions. Ignore their dogma at your own
risk! Heaven forbid you should actually post any code here that doesn't
comply. Lew will pick it to pieces, leaving nothing but shredded ego
and a bit of "for" loop here, a smidgen of inner class there.
Christ, Pete!
Well, I guess it's all right to shred the messenger if you can't
really speak to the message.
I have not said anything about "faith" in the conventions. The OP's
question was explicitly about the naming conventions. How can I
answer that without reference to the conventions documentation, hm?
Riddle me that!
I know you have contempt for the conventions; you said as much in your
earlier post:
"I do all sorts of things, naming- and formatting-wise, in Java that
Java purists hate.
"
So your bias is well known.
But the OP did ask about conventions, and the conventions are as I
stated.
As for their value, well, the key in Java programming really is
types. There is a widespread practice, as you stated, of naming an
interface vs. a class (correcting your example) as "MyType" and
"MySpecificKindOfMyType". The type names are supposed to represent
functionality in the domain of discourse, so 'List' is the general
contract for a certain collection type and 'ArrayList' is a subtype
with specific properties. The names indicate the problem-domain
(collections) characteristics.
I'm not going to get into a snarky religious war with you, Pete.
Flame away to your heart's content. I presented the case against
Hungarian-style notational warts (they violate information hiding).
If you want to present the case in their favor, that provides balance
for those making a critical decision. If they want to base that
decision on your statement that I'm picky, then they are using
irrelevant criteria, so why even proffer such?
Maybe it's that lack of critical thinking ...