From
InterfacesShouldBeAdjectives ...
Interfaces Should Be Nouns
The primary reason to create an interface is to allow for a collection of similar, but different objects. As a concrete example, if one wanted a collection of Small Dogs, Medium Dogs, and Large Dogs; the obvious interface to create would be Dog. The adjectives Small, Medium, and Large would be applied when creating the concrete classes Small
Dog, Medium
Dog, and Large
Dog.
An interface is a generalization of a set of classes. The interface should be a noun. The derived classes can then be named using Adjective+Noun (such as Small
Dog from Dog) or using a more specific noun (such as Dog From Animal).
The use of an adjective for an interface may be appropriate in some situations, such as a decorator pattern. It is possible one may want a Small wrapper that could take a Dog, Cat, or Fish, but this type of use is much more the exception than the rule. Use a noun to name an interface as a general rule and only use other naming conventions where an exception is justified.
Perhaps interfaces should be interfaces ...
{Discussions in
ThereAreNoTypes,
AttributesInNameSmell, and
PrimaryNoun may take issue with this.}
CategoryInterface