I typically name my C# interfaces as IThing. I’m creating an extension method class for IThing, but I don’t know what to name it. On one hand, calling it ThingExtensions seems to imply it is an extension class to some Thing class instead of to the IThing interface. It also makes the extension class be sorted away from the interface it extends, when viewing files alphabetically. On the other hand, naming it IThingExtensions makes it look like it is an interface itself, instead of an extension class for an interface. What would you suggest?
Edit: there is not a Thing class that implements IThing, in response to some of the comments.
I definitely prefer the name
ThingExtensionsoverIThingExtensions. The reason being that to most programmers anIprefix on a type implies that it is an interface. This is both a very common pattern and part of the .Net Design Guidelines.Adding an
Iprefix for the extension method case breaks both assumptions and established guidelines.There is also precedence for this in the Base Class Library. The majority of the extension methods available for
IEnumerableare contained in the typeEnumerable.