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

uri*_*ium 19 language-agnostic oop design-patterns naming-conventions

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

作者提到您应该在类的名称中避免使用管理器,处理器,数据或信息等单词.我到处都用过这些.什么是更好的名字?我有一个负责启动和停止连接的类.所以我把它命名为ConnectionManager.

myA*_*ces 24

等待!

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

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


Cod*_*ray 12

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

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

还要考虑遵循"一刀切"的规则很少帮助任何人编写更好的代码(至少,在"更易理解"或"更具表现力"的意义上并不是更好.)我倾向于后缀所有我的名字本地包装类用Manager.例如,我可能会类调用DwmManager,或者VisualStylesManager,在这种非常特殊的情况下,它确实意味着什么给我.如果我看到一个名为类Manager在我的代码基础,我知道它包装了一堆密切相关功能.您必须根据具体情况做出决定,了解您最终要完成的任务.

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


Wad*_*ndy 6

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


Jam*_*.Xu -5

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

  • 命名是软件开发中最重要的事情之一 (27认同)
  • @Cody 确实如此。如果没有命名,你绝对无法创建自然的抽象。如果没有抽象,您最终会得到过程代码(想象一个“类”中有 20k 行)。 (2认同)