类 具有保留名称(关键字)。你如何处理这个问题?
Classes with reserved names (keywords). How do you deal with this?
碰巧我的 class 是一个(医疗)服务,您对我在 angular 中为检索医疗服务的服务命名有什么建议吗?
到目前为止我想到了两件事:
- MedicalServicesService 听起来是不是有点奇怪?
- 我在考虑用同义词替换“(医疗)服务”,也许 "medical assistance"。然后我会将 MedicalAssistanceService 作为(编程)服务名称。
尽管如此,手术很难被视为医疗救助。这确实是一项医疗服务。
很好奇当他们的 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。虽然并非对所有语言都特别有效,但它们确实为您提供了一些重要信息的精确指针。
碰巧我的 class 是一个(医疗)服务,您对我在 angular 中为检索医疗服务的服务命名有什么建议吗?
到目前为止我想到了两件事:
- MedicalServicesService 听起来是不是有点奇怪?
- 我在考虑用同义词替换“(医疗)服务”,也许 "medical assistance"。然后我会将 MedicalAssistanceService 作为(编程)服务名称。 尽管如此,手术很难被视为医疗救助。这确实是一项医疗服务。
很好奇当他们的 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。虽然并非对所有语言都特别有效,但它们确实为您提供了一些重要信息的精确指针。