什么是比经理,处理器等更好的名称?

时间:2011-04-06 16:14:41

标签: oop design-patterns language-agnostic naming-conventions

我正在阅读清洁代码http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

一书

作者提到您应该避免使用类名称中的Manager,Processor,Data或Info等字样。我到处都用过这些。什么是更好的名字?我有一个负责启动和停止连接的类。所以我把它命名为ConnectionManager。

8 个答案:

答案 0 :(得分:23)

等待!

本书的重点是,类名中的管理器意味着该类不止一件事。 Robert C. Martin在本节中提到单一责任原则!

这不是关于名称,而是关于通常这样命名的类。更改名称不会减少课程的责任!

答案 1 :(得分:11)

我的猜测是本书提出这一点,因为它试图鼓励您为您的班级选择更具描述性的名称。这里没有“命名惯例”;这就是你首先遇到的问题。任何通用命名约定都无法考虑特定类并为其选择最佳名称。表达性比遵循命名约定更重要。将课程称为“经理”或“处理者”并没有说明它以及它对第一次阅读您的代码的人所做的事情。

如果你真的想不出更好的东西,那么命名一个类ConnectionManager并没有什么本质上的错误。但我至少在它管理的集合的类型之后命名它。或者也许如何它管理这些集合。或者为什么它管理这些集合。

还要考虑遵循“一刀切”的规则很少帮助任何人编写更好的代码(至少,在“更易理解”或“更具表现力”的意义上并不是更好。)我倾向于使用名称后缀使用Manager的所有原生包装类。例如,我可能有一个名为DwmManagerVisualStylesManager的类。在非常具体的情况下,它 意味着对我来说。如果我在我的代码库中看到一个名为Manager的类,我知道它包含了一堆密切相关的功能。你必须根据具体情况做出决定,了解你的意思最终试图完成。

如果您阅读代码完成并错过了编写清晰且易于理解(因此可维护)的代码的部分,您可能错过了这一点。

答案 2 :(得分:5)

在ConnectionManager类的示例中,类可能更多地表示设计缺陷,这需要“坏”名称。除了执行可以在名为MyDatabaseConnection的单例子类中轻松完成的操作之外,该类是否还在执行某些操作?

答案 3 :(得分:1)

以实例名称DataProcessor。

首先,除非是

,否则每个函数都可以处理数据,获取数据或返回一些数据
void f(void)

但如果它是这种类型的功能,它绝对会产生一些东西,所以无论如何都是处理器。

DataProcessor基本上是任何东西,因为它没有说它操纵什么以及如何操作。所以你应该替换

DataProcessor,例如UserInfoStore。

答案 4 :(得分:0)

我倾向于经常使用“初始化”或“初始化器”这个词。如果是其他任何东西,我通常会想到一个与我想到的第一件事相比很长的同义词。我还使用术语“Parser”和其他东西。

答案 5 :(得分:0)

OH,NO !!

请不要被关于如何“应该”命名的一般性声明所吓倒。毕竟,他们 你的东西 。也许你的名字“经理”比“连接经理”更好,因为它更短。特别是如果您的代码的这一部分主要管理“连接”而没有其他。

我相信这些书有非常有用的想法,但仅限于那些永远不会阅读它们的编码员。为什么?因为 阅读此类书籍的工程师已经内化并将最原始的原则纳入其中。那些不会阅读它们的程序员并不关心。

答案 6 :(得分:0)

" Helper"," Common"," Core"," Utilities"看起来比#34;经理"等等或差。 他们对他们所做的事情一无所知 "工厂"这里绝对错了。
替代名称是"协调员"或" Controller"。

  

你说:我有一个负责启动和停止连接的课程。所以我把它命名为ConnectionManager。

如果班级只是"开始"并且"停止"连接,为什么不" ConnectionSwitcher"吗

  你说:我到处都用过这些。

我也有很多*经理课程。今天我决定更改"帐户经理"的名称。它使用Account存储库来执行CRUD操作。

我将其拆分为"帐户安全"和"帐户操作"。

它们存在于MyProject.BusinessLogic命名空间中,并且都使用公开CRUD方法的AccountRepository类。 前者负责像" Login"和" ChangePassword"。 后者负责针对数据库的CRUD操作,但受某些逻辑的限制,例如,如果存在一些无法删除的帐户的注册表记录。 (" AccountOperations"还使​​用其他存储库来检索所需的信息)

我对"操作"不满意我正在寻找更好的东西(协调员,主管......)但这是一个开始。

我的案例将成为思考方式的一个例子。

答案 7 :(得分:-3)

不要太在意这个名字,除非你或某人真的不喜欢它,否则不要太在意它。

相关问题