【问题标题】:Using uncommon characters `$` and `_` in java Identifiers在 java 标识符中使用不常见的字符 `$` 和 `_`
【发布时间】:2013-02-23 03:43:10
【问题描述】:

在 Java 标识符中使用这些不常见的字符有什么问题吗? 来自Java Language Specification

“Java 字母”包括大写和小写的 ASCII 拉丁字母 A-Z (\u0041-\u005a) 和 a-z (\u0061-\u007a),以及,对于历史 原因,ASCII 下划线(_,或 \u005f)和美元符号($,或 \u0024)。 $ 字符只能机械地使用 生成的源代码,或者很少访问预先存在的名称 旧系统。

这是否意味着这些字符已经过时了?或者它们只是为特殊用例保留的。 _ 常用于静态字段名。

我正在尝试构建基于字段和方法名称的行为的小型库。它将接收对象解析其字段名称并决定如何操作。
我也可以使用注释。但是序列化有困难(JAXB等)。而且有时使用描述性字段名称(Convention over Configuration)更容易和更快。因此,这些很少使用的字符在这种情况下可能很有用。

更新

我故意没有提到 unicode 字符。我认为标识符名称中的 unicode 字符至少不合适。

【问题讨论】:

  • 还有很多有效字符
  • 我认为除了第一个字符之外,您还可以使用数字。
  • 你可以使用任何Unicode字母,à呢。
  • 我已经更新了我的问题。当然,我们也可以使用数字。但我认为数字在标识符名称中并不罕见。

标签: java design-patterns coding-style naming-conventions


【解决方案1】:

下划线完全没问题。不过我会避免使用美元。 $name 可能与某些隐藏/生成的字段发生冲突。

如果您的库要求用户类中的特殊字段用下划线标记,那可能没问题。但是你可以想象两个库有相似的需求并且冲突运行。

【讨论】:

  • 一些 Java 商店使用下划线前缀来表示类全局字段。出于某种原因,这些商店对“这个”有反感。
  • @GilbertLeBlanc:他们可能借用了 C 约定,即使用下划线将某些结构字段标记为“私有”。 (这实际上并没有阻止其他代码访问这些字段,但它清楚地表明它们不应该这样做。)在 Java 中,人们通常将 all 字段设为私有,因此这种约定变得更少有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
  • 2015-07-30
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多