Em geral, é bom evitar palavras como "manipular" ou "processar" como parte de nomes de rotina e nomes de classe, a menos que você esteja lidando com (por exemplo) identificadores de arquivo ou (por exemplo) processos unix. No entanto, as aulas abstratas geralmente não sabem o que farão com algo além de, digamos, processá-lo. Na minha situação atual, tenho um "EmailProcessor" que efetua login na caixa de entrada do usuário e processa mensagens a partir dela. Não está realmente claro para mim como atribuir um nome mais preciso a esse nome, embora eu tenha notado a seguinte questão de estilo:
- melhor tratar as classes derivadas como clientes e nomear a classe base pela parte da funcionalidade que implementa? Dá mais significado, mas violará o is-a. Por exemplo, EmailAcquirer seria um nome razoável, pois está sendo adquirido para a classe derivada, mas a classe derivada não será adquirida para ninguém.
- Ou apenas um nome realmente vago, pois quem sabe o que as classes derivadas farão. No entanto, "Processador" ainda é muito geral, pois está realizando muitas operações relevantes, como efetuar login e usar o IMAP.
Alguma maneira de sair desse dilema?
O problema é mais evidente para métodos abstratos, nos quais você não pode realmente responder à pergunta "o que isso faz?" porque a resposta é simplesmente "o que o cliente quiser".