The "Base" Suffix

Came across some code today that seemed a bit backwards (and made me chuckle), it was effectively the following:

public class FooBase extends Foo { }

Bass ackward nomenclature aside, the code brings a separate point to mind on use of the Base suffix. Krzysztof Cwalina aptly points out that the Base type can lead to some ugly code in common cases where you want to return the base type. This also implicitly suggests that it shouldn’t be used in public facing interfaces. I would add the fact that words with the Base suffix aren’t usually descriptive of real objects (Dog extends Mammal extends… MammalBase?) and for that reason I often see examples where code in classes suffixed with the word Base would be a more natural fit either in the child class itself, in a separate utility class, or in a better thought out base class that represents a real object.