In generale è bene evitare parole come "handle" o "process" come parte dei nomi di routine e dei nomi di classe, a meno che non si abbia a che fare con (ad esempio) handle di file o (ad esempio) processi unix. Tuttavia le classi astratte spesso non sanno davvero cosa faranno con qualcosa oltre a, diciamo, elaborarlo. Nella mia situazione attuale ho un "EmailProcessor" che accede alla posta in arrivo di un utente ed elabora i messaggi da esso. Non è molto chiaro per me come dare a questo un nome più preciso, anche se ho notato la seguente questione di stile:
- meglio trattare le classi derivate come client e nominare la classe base dalla parte della funzionalità che implementa? Dà più significato ma violerà is-a. Ad esempio EmailAcquirer sarebbe un nome ragionevole poiché sta acquisendo per la classe derivata, ma la classe derivata non sarà acquisita per nessuno.
- O solo un nome davvero vago da chissà cosa faranno le classi derivate. Tuttavia, "Processore" è ancora troppo generico poiché sta eseguendo molte operazioni rilevanti, come l'accesso e l'uso di IMAP.
Qualche via d'uscita da questo dilemma?
Il problema è più evidente per i metodi astratti, in cui non si può veramente rispondere alla domanda "cosa fa questo?" perché la risposta è semplicemente "qualunque cosa il cliente desideri".