【问题标题】:Classes with reserved names (keywords). How do you deal with this? [closed]具有保留名称(关键字)的类。你如何处理这个问题? [关闭]
【发布时间】:2020-04-29 23:54:22
【问题描述】:

碰巧我的课程是(医疗)服务,您对我将检索医疗服务的 Angular 服务命名有什么建议吗?

到目前为止,我想到了两件事:

  • MedicalServicesService 听起来有点奇怪?
  • 我正在考虑用同义词代替“(医疗)服务”,也许是“医疗援助”。然后我将 MedicalAssistanceService 作为(编程)服务名称。 尽管如此,手术几乎无法获得医疗救助。这确实是一项医疗服务。

很好奇当他们的一个类名碰巧使用编程关键字时人们会做什么。一个有待商榷的问题。

不确定此处是否允许命名约定问题?如果不是,我很乐意删除我的问题。谢谢。

【问题讨论】:

  • 命名推荐问题在这里确实是题外话,因为它们主要是基于意见的主题。
  • @TylerH 他们可能有点基于意见,但如果人们真的问自己这些问题并有地方获得答案,我会很高兴。我厌倦了人们调用字符串a,因为他们想不出更好的办法。
  • 我决定调用服务 MedicalServiceService,因为 MedicalService 是一个实体。我已经删除了 MedicalServicesService 中的 s,因为有人向我指出服务名称往往是单数的,例如产品服务,而不是产品服务。由于重复,这可能有点令人困惑,但这确实是实体名称,我找不到完美的同义词。非常感谢,马祖基!这是一个个人项目,而不是一个团队。 MedicalUseCase 真是个好主意!然后我会有 MedicalUseCaseService,这听起来不像是重复的。感谢您的所有帮助和链接
  • @mazunki 他们这样做了; reddit、quora、expertexchange、ad infinitum。

标签: naming conventions


【解决方案1】:

首先,这在很大程度上取决于语言。

与您的团队交谈

其次,也是最重要的!根据您的团队,约定可能会发生很大变化。与您的团队交谈,并同意使用一种约定。永远不要忘记这一点。

约定

要遵循通用的约定/标准,就像您提到的那样,使用关键字通常是一个坏主意。我试图避免它们,就像我避免在变量名中使用数字一样,即使我正在使用的特定语言允许它。原因?坚持“让我们通过混合语言之间的规则来避免问题”比每次都检查规则更容易。

我经常花30分钟去想一个完美的变量名,所以我很习惯这种思考。

长度

变量名过长是不好的,因为它会阻碍流式阅读,而过短的变量名也是不好的,因为很难猜出你想要什么词。你可以称它为srvc,当然,但谁会在一个月内知道这意味着什么(除非你评论它,当然)。实际上,删除用户变量中的元音很常见,尤其是在低级/旧语言中。

具体情况

至于这个具体的例子,我不认为MedicalService 是一个关键字。首先,它是较长名称的一部分,例如 MedicalFile 看起来根本不像来自系统的文件,而是带有医疗数据的表格。

我不完全知道MedicalService 的作用,但它似乎是您可以在医院柜台要求的服务的通用(可能是抽象的)类名称,所以我假设。

GenericMedicalThingToDo 是一种避免关键字的有趣方式,但我不会这么称呼它。 MedicalUseCase 似乎好多了,而且直截了当。

另一方面,如果这只是一个说明用户选择的用例的字符串(考虑到您提到了 Angular),我会坚持使用userMedicalChoice(将 PascalCase 删除为 camelCase)。

如果您需要使用一个实际上是关键字的词(这种情况经常发生),您可能需要在其末尾或开头添加一个_。这通常不适用于接口,因为通常只在内部/私人使用这些接口。一些约定使用双 _ 表示私有,使用单 _ 以避免被欺骗。

最后一点:

在我使用过的许多编程语言中,将关键字作为较长变量名的一部分都不是问题,所以只要将其命名为 MedicalServiceGenericMedicalService,如果您要对其进行子类化。

PS:阅读不同语言的一些约定,例如来自 Python 的 PEP-8PEP-256,或 Google's C++ conventions。虽然并非对所有语言都特别有效,但它们确实为您提供了一些关于什么是重要的精确指针。

【讨论】:

    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2011-04-09
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多