> Personally, I find the "leading I on an interface" rule to > hurt readability, but worse is that it also tempts you to an > insidious practice of naming an interface with the I, and > then an implementation class the same way without the I. > Consider the two names: > > * IThisIsAVeryLongName (interface describing part of your app's API) > > * ThisIsAVeryLongName (class that implements IThisIsAVeryLongName) > > Without studying closely, can you instantly tell the > difference? I contend that it's easier to do that (although > not necessarily trivial with long names) with patterns like: > > * ThisIsAVeryLongName (interface describing part of your app's API) > > * ThisIsAVeryLongNameImpl (class that implements ThisIsAVeryLongName) >
Actually the I-Fraction I belong to says: IThisIsAVeryLongName and ThisIsAVeryLongNameImpl as well as Aspect1ThisIsAVeryLongNameImpl and AnotherAspectThisIsAVeryLongNameImpl (like FileSystemThisIsAVeryLongNameImpl and PostgresThisIsAVeryLongNameImpl) along with ThisIsAVeryLongNameFactory or, if you have more then one: IThisIsAVeryLongNameFactory... The clue is: ThisIsAVeryLongName < is never used directly. Regards Leon --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]