I am in the having one of those very useless “what-should-we-have-done” debates with a guy on my team and I thought I suck you folks into it. It is around naming of interfaces with an “I” prefix. Something COM founded (I think, does anyone know of an earlier example?) but java snubbed.
The only prefix used is “I” for interfaces (as in ICollection), but that is for historical reasons. In retrospect, I think it would have been better to use CollectionInterface as the name—it is clearer and follows the guidelines.
The “I” prefix on interfaces is a clear recognition of the influence of COM on the .NET Framework. COM popularized, even institutionalized the notation that interfaces begin with “I” Although we discussed diverging from this historic pattern we decided to carry forward the pattern as so many of our users were already familiar with COM.