我应该避免使用常用的 class 名称吗?

Should I avoid commonly used class names?

有些 class 名称非常“通用”,以至于它们经常出现在几个不同的包中,包括库和应用程序代码中。一些例子:

在我的 IDE 中,尝试自动完成 class 的导入,就像其中一个一样,会引发几个相互竞争的建议。

命名 class 时,避免 class 已在别处使用的名称是个好主意吗?

对于其中一些示例,我认为不鼓励使用这样的 class 名称,因为它根本没有足够的意义(例如 Factory),但我想知道是否不鼓励使用 class 名称 因为它在其他地方(经常)被使用。

评论、地区和位置看起来不错。就个人而言,主观上,Component 和 Factory 确实太常见而无法使用,但客观上我想不出任何不使用它们作为名称的常规理由。例如,我肯定会尝试将这些名称与它们各自的用法结合起来; TaskFactory、WidgetComponent、ButtonFactory 等

取决于我们是在谈论业务还是技术部分。

在技术部分:使用通用名称实际上是让其他人了解所使用模式的一种方式,Factory 就是一个很好的例子 - 当您看到 class 命名为 SomethingFactory,你可以期待一个 Factory Pattern. 它更进一步到框架、库等。 =23=]) Component 是一个很常见的词。所以你们一定要用,只要用对了。

在业务部分:简单,如果这些词描述了您的业务领域,那么一定要使用它们。不要仅仅因为这些词看起来很常见就试图发明一些花哨的名字(或词库!),这是您的业务领域 - 它是神圣的。

您应该使用对您最有意义的 class 名称。 None 以上您提出的名称是禁止使用的,您没有理由不能使用它们(假设一种语言支持名称空间并且可以通过这种方式避免命名冲突)。

但是,您可以考虑深入到 class 个更具体和精确的名称,这将更好地描述代码中对象的含义。例如:

  • 而不是 CommentLineCommentBreakComment 很容易成为 class编译器项目中您想为注释创建语义块的名称。
  • 而不是 ComponentListComponentCalendarComponentViewComponent 在实现具有 class-based 组件的 UI 库时特别有意义。
  • 而不是 Factory:如果您想制作比萨饼,PizzaFactory 更有意义!
  • 而不是 LocationGeographicLocationSemanticLocation 在实施基于方向的时更有意义导航应用程序,并且您正在尝试区分“45 deg N, 77 deg W”和 'next to the pizza place'.
  • Region: CodeRegion 可以在编译器中使用,GeographicRegion 可以使用在地图应用程序中。

如果您害怕具体,命名空间和包会有所帮助。但是,没有什么可以阻止您在 class 中使用与另一个有意义的包相同的名称。 class 名称特别不受版权保护,现在大多数 IDE 都足够智能,可以在使用自动完成时区分您所指的包。

在大多数情况下,特异性有助于帮助其他开发人员阅读您的代码,这是每个开发人员都会欣赏的!