Citarei algumas passagens dos Padrões de Implementação de Kent Beck:
Nome Simples da Superclasse
"[...] Os nomes devem ser curtos e incisivos. No entanto, tornar os nomes precisos às vezes parece exigir várias palavras. Uma saída para esse dilema é escolher uma metáfora forte para o cálculo. Com uma metáfora em mente, até palavras isoladas trazem consigo uma rica teia de associações, conexões e implicações. Por exemplo, na estrutura de desenho HotDraw, meu primeiro nome para um objeto em um desenho era
DrawingObject . Ward Cunningham veio junto com a metáfora da tipografia: um desenho é como uma página impressa e disposta. Os itens gráficos em uma página são figuras, então a classe se tornou Figura . No contexto da metáfora, Figura
é simultaneamente mais curta, mais rica e mais precisa do que DrawingObject . "
Nome da subclasse qualificada
"Os nomes das subclasses têm duas tarefas. Eles precisam comunicar como são as classes e como são diferentes. [...] Ao contrário dos nomes nas raízes das hierarquias, os nomes das subclasses não são usados com tanta frequência em conversas, para que possam ser expressivos à custa de serem concisos. [...]
Dê às subclasses que servem como raízes das hierarquias seus próprios nomes simples. Por exemplo, HotDraw tem uma classe Handle que apresenta operações de edição de figura quando uma figura é selecionada. Chama-se, simplesmente, Handle
apesar de estender Figura . Há toda uma família de alças e, mais apropriadamente, têm nomes como
StretchyHandle e TransparencyHandle . Como Handle é a raiz de sua própria hierarquia, ele merece um nome de superclasse simples mais do que um nome de subclasse qualificado.
Outro problema na nomenclatura de subclasses são as hierarquias de vários níveis. [...] Em vez de acrescentar cegamente os modificadores à superclasse imediata, pense no nome da perspectiva do leitor. De que classe ele precisa para saber que é essa classe? Use essa superclasse como base para o nome da subclasse. "
Interface
Dois estilos de nomear interfaces dependem de como você pensa nas interfaces. As interfaces como classes sem implementações devem ser nomeadas como se fossem classes ( nome da superclasse simples , nome da subclasse qualificada ). Um problema com esse estilo de nomenclatura é que os nomes bons são usados antes de você começar a nomear classes. Uma interface chamada File precisa de uma classe de implementação chamada algo como
ActualFile , ConcreteFile ou (eca!) FileImpl(um sufixo e uma abreviatura). Em geral, comunicar se se está lidando com um objeto concreto ou abstrato é importante, se o objeto abstrato é implementado como uma interface ou uma superclasse é menos importante. O adiamento da distinção entre interfaces e superclasses é bem> suportado por este estilo de nomenclatura, deixando você livre para mudar de ideia mais tarde, se necessário.
Às vezes, nomear classes concretas simplesmente é mais importante para a comunicação do que ocultar o uso de interfaces. Neste caso, prefixe os nomes das interfaces com “I”. Se a interface for chamada IFile , a classe pode ser simplesmente chamada de File .
Para uma discussão mais detalhada, compre o livro! Vale a pena! :)