【发布时间】:2020-05-05 04:26:37
【问题描述】:
我正在学习 HeadFirst Java 书籍,目前正在学习数字和静态章节。他们最近引入了静态最终变量的概念。完全清楚他们的解释方式。我的问题是,他们使用类名+一些任意名称来命名变量,用下划线分隔,全部大写。这是一个示例。
public class Foo {
public static final int FOO_SUM = 5;
}
这是为什么?
【问题讨论】:
-
我猜这是从早期语言中借来的命名常量的约定。例如,在 C 语言中,通常写
#define FOO_SUM 5来定义一个常量(不是作为不可变变量,而是作为预处理器的宏)。在 C 中使用全大写名称有助于区分预处理器代码和其他代码。 -
这是一个约定。该格式称为UPPER_SNAKE_CASE。它只能用于
static final原语或不可变对象。它标志着一些被认为是不变的东西。 -
包含类名不是约定的一部分;我猜这本书就是这样写的,因为它是一个任意的例子,而“FOO”是一个任意的词。
-
我会说最好不要将类名放在常量名中,因为您已经使用类名来访问它;
Foo.FOO_SUM是多余的,因为它有两次类名。 -
由于它已经嵌入到
Foo类中,我会特别避免在常量名称中包含 Foo 的冗余。
标签: java oop static naming-conventions final