Im Allgemeinen ist es gut, Wörter wie "handle" oder "process" als Teil von Routinennamen und Klassennamen zu vermeiden, es sei denn, Sie haben es mit (z. B.) Dateihandles oder (z. B.) Unix-Prozessen zu tun. Abstrakte Klassen wissen jedoch oft nicht wirklich, was sie mit etwas anderem anfangen sollen, als es beispielsweise zu verarbeiten. In meiner aktuellen Situation habe ich einen "EmailProcessor", der sich im Posteingang eines Benutzers anmeldet und Nachrichten von diesem verarbeitet. Es ist mir nicht wirklich klar, wie ich diesem einen genaueren Namen geben soll, obwohl ich bemerkt habe, dass die folgende Stilfrage auftritt:
- Es ist besser, abgeleitete Klassen als Clients zu behandeln und die Basisklasse nach dem Teil der von ihr implementierten Funktionalität zu benennen. Gibt ihm mehr Bedeutung, verstößt aber gegen is-a. Zum Beispiel wäre EmailAcquirer ein vernünftiger Name, da er für die abgeleitete Klasse erworben wird, die abgeleitete Klasse jedoch für niemanden.
- Oder einfach nur ein vager Name, denn wer weiß, was die abgeleiteten Klassen tun werden. "Prozessor" ist jedoch immer noch zu allgemein, da er viele relevante Vorgänge ausführt, z. B. das Anmelden und Verwenden von IMAP.
Ein Ausweg aus diesem Dilemma?
Das Problem ist offensichtlicher für abstrakte Methoden, bei denen Sie die Frage "Was macht das?" Nicht wirklich beantworten können. denn die Antwort lautet einfach "was auch immer der Kunde will".