12. The names of interfaces and classes

In their book 'Exploring Java' ([12]), Niemeyer and Peck say: ‘Interfaces define capabilities, so it's common to name interfaces after their capabilities in a passive sense. Driveable is a good example; runnable and updatable would be two more.’

In the book 'Java Design: Building Better Apps and Applets' ([2]), Coad and Mayfield say: ‘Requiring interface names to end in able or ible is a bit too complicated a convention. ... Choose whatever prefix convention you prefer: I, I_, Int_; whatever. We prefer I.’

In 'ChiMu OO and Java Development: Guidelines and Resources' ([8]), Mark Fussell says: ‘Interfaces should be given no suffixes or prefixes: they have the normal name space. Classes are given a suffix of Class if they are meant to be instantiated or are given a suffix of AbsClass if they are an abstract class that provides inheritable implementation but is not complete and instantiable by itself.’

In my teaching, I follow Fussell's advice for interfaces and use a suffix of Impl for classes.