通常,最好避免将诸如“ handle”或“ process”之类的单词作为例程名称和类名称的一部分,除非您要处理(例如)文件句柄或(例如)unix进程。但是,抽象类通常并不真正知道它们除了处理之外还打算做什么。在当前情况下,我有一个“ EmailProcessor”,它可以登录到用户的收件箱并处理来自该收件箱的消息。尽管我注意到出现了以下样式问题,但我仍然不清楚如何给它一个更精确的名称:
- 更好地将派生类视为客户端,并通过其实现的功能的一部分来命名基类?给它更多的含义,但会违反is-a。例如,EmailAcquirer是一个合理的名称,因为它是为派生类获取的,但是派生类将不会为任何人获取。
- 或只是名字含糊不清,因为谁知道派生类将做什么。但是,“处理器”仍然过于笼统,因为它正在执行许多相关的操作,例如登录和使用IMAP。
摆脱这种困境有什么办法吗?
对于抽象方法,问题更加明显,在抽象方法中,您不能真正回答“这是做什么的”问题。因为答案仅仅是“客户想要的任何东西”。