En general, es bueno evitar palabras como "manejar" o "procesar" como parte de los nombres de rutina y nombres de clase, a menos que se trate de (por ejemplo) identificadores de archivos o (por ejemplo) procesos unix. Sin embargo, las clases abstractas a menudo no saben qué van a hacer con algo además de, por ejemplo, procesarlo. En mi situación actual, tengo un "EmailProcessor" que inicia sesión en la bandeja de entrada de un usuario y procesa los mensajes de esta. No tengo muy claro cómo darle un nombre más preciso, aunque he notado que surge la siguiente cuestión de estilo:
- ¿Es mejor tratar las clases derivadas como clientes y nombrar la clase base por la parte de la funcionalidad que implementa? Le da más significado pero violará is-a. Por ejemplo, EmailAcquirer sería un nombre razonable ya que está adquiriendo para la clase derivada, pero la clase derivada no lo estará para nadie.
- O simplemente un nombre realmente vago, ya que quién sabe lo que harán las clases derivadas. Sin embargo, "Procesador" sigue siendo demasiado general ya que está realizando muchas operaciones relevantes, como iniciar sesión y usar IMAP.
¿Alguna salida a este dilema?
El problema es más evidente para los métodos abstractos, en los que realmente no puede responder la pregunta "¿qué hace esto?" porque la respuesta es simplemente "lo que el cliente quiera".