类 具有保留名称(关键字)。你如何处理这个问题?

Classes with reserved names (keywords). How do you deal with this?

碰巧我的 class 是一个(医疗)服务,您对我在 angular 中为检索医疗服务的服务命名有什么建议吗?

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

很好奇当他们的 classes 名字之一恰好使用编程关键字时人们会做什么。一个有待讨论的问题。

不确定这里是否允许提出命名约定问题?如果不是,我会很乐意删除我的问题。谢谢。

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

与您的团队交谈

其次,也是最重要的!根据您的团队,惯例可能会有很大变化。与您的团队交谈,并就使用的约定达成一致。永远不要忘记这一点。

约定

有通用的 conventions/standards 可以遵循,正如您提到的,使用关键字通常是一个糟糕的主意。我尝试避免使用它们,就像我避免在变量名中使用数字一样,即使我正在使用的特定语言允许这样做。原因?坚持 "let's avoid problems by mixing rules between languages" 比每次都检查规则要容易得多。

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

长度

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

具体案例

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

我不太清楚这个 MedicalService 是做什么的,但它看起来像是一个通用的(抽象的,可能是)class 服务名称,您可以在医院的柜台要求这些服务, 所以我假设。

GenericMedicalThingToDo 是一种避免关键字的有趣方式,但我不会那样称呼它。 MedicalUseCase 看起来好多了,说到点子上了。

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

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

最后一点:

在我使用过的许多编程语言中,将关键字作为较长变量名的一部分都不是问题,所以只需将其命名为 MedicalService,或者如果你是 GenericMedicalService去subclass它。

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