我应该避免使用常用的 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 个更具体和精确的名称,这将更好地描述代码中对象的含义。例如:
- 而不是 Comment:LineComment 或 BreakComment 很容易成为 class编译器项目中您想为注释创建语义块的名称。
- 而不是 Component:ListComponent、CalendarComponent 或 ViewComponent 在实现具有 class-based 组件的 UI 库时特别有意义。
- 而不是 Factory:如果您想制作比萨饼,PizzaFactory 更有意义!
- 而不是 Location:GeographicLocation 或 SemanticLocation 在实施基于方向的时更有意义导航应用程序,并且您正在尝试区分“45 deg N, 77 deg W”和 'next to the pizza place'.
- Region: CodeRegion 可以在编译器中使用,GeographicRegion 可以使用在地图应用程序中。
如果您害怕具体,命名空间和包会有所帮助。但是,没有什么可以阻止您在 class 中使用与另一个有意义的包相同的名称。 class 名称特别不受版权保护,现在大多数 IDE 都足够智能,可以在使用自动完成时区分您所指的包。
在大多数情况下,特异性有助于帮助其他开发人员阅读您的代码,这是每个开发人员都会欣赏的!
有些 class 名称非常“通用”,以至于它们经常出现在几个不同的包中,包括库和应用程序代码中。一些例子:
- 评论
- 组件
- 工厂
- 位置
- 地区
在我的 IDE 中,尝试自动完成 class 的导入,就像其中一个一样,会引发几个相互竞争的建议。
命名 class 时,避免 class 已在别处使用的名称是个好主意吗?
对于其中一些示例,我认为不鼓励使用这样的 class 名称,因为它根本没有足够的意义(例如 Factory),但我想知道是否不鼓励使用 class 名称 因为它在其他地方(经常)被使用。
评论、地区和位置看起来不错。就个人而言,主观上,Component 和 Factory 确实太常见而无法使用,但客观上我想不出任何不使用它们作为名称的常规理由。例如,我肯定会尝试将这些名称与它们各自的用法结合起来; TaskFactory、WidgetComponent、ButtonFactory 等
取决于我们是在谈论业务还是技术部分。
在技术部分:使用通用名称实际上是让其他人了解所使用模式的一种方式,Factory
就是一个很好的例子 - 当您看到 class 命名为 SomethingFactory
,你可以期待一个 Factory Pattern. 它更进一步到框架、库等。 =23=]) Component
是一个很常见的词。所以你们一定要用,只要用对了。
在业务部分:简单,如果这些词描述了您的业务领域,那么一定要使用它们。不要仅仅因为这些词看起来很常见就试图发明一些花哨的名字(或词库!),这是您的业务领域 - 它是神圣的。
您应该使用对您最有意义的 class 名称。 None 以上您提出的名称是禁止使用的,您没有理由不能使用它们(假设一种语言支持名称空间并且可以通过这种方式避免命名冲突)。
但是,您可以考虑深入到 class 个更具体和精确的名称,这将更好地描述代码中对象的含义。例如:
- 而不是 Comment:LineComment 或 BreakComment 很容易成为 class编译器项目中您想为注释创建语义块的名称。
- 而不是 Component:ListComponent、CalendarComponent 或 ViewComponent 在实现具有 class-based 组件的 UI 库时特别有意义。
- 而不是 Factory:如果您想制作比萨饼,PizzaFactory 更有意义!
- 而不是 Location:GeographicLocation 或 SemanticLocation 在实施基于方向的时更有意义导航应用程序,并且您正在尝试区分“45 deg N, 77 deg W”和 'next to the pizza place'.
- Region: CodeRegion 可以在编译器中使用,GeographicRegion 可以使用在地图应用程序中。
如果您害怕具体,命名空间和包会有所帮助。但是,没有什么可以阻止您在 class 中使用与另一个有意义的包相同的名称。 class 名称特别不受版权保护,现在大多数 IDE 都足够智能,可以在使用自动完成时区分您所指的包。
在大多数情况下,特异性有助于帮助其他开发人员阅读您的代码,这是每个开发人员都会欣赏的!