Java常量变量,命名规范

34

Java常量变量有任何命名约定吗?
通常情况下,我们使用含有大写字母和下划线(_)的变量名。

例如:

public final class DeclareConstant {

    public static final String CONSTANT_STRING = "some constant";

    public static final int CONSTANT_INTEGER = 5;

}

3
顺便说一下,它被称为“大驼峰式命名法”。 - Jiri Kremser
5个回答

25

没错,就是这样。它经常用于enum

唯一常见的例外是在记录日志时可能会看到。

private static final Logger log = Logger.getLogger(getClass().getName());

但我更喜欢使用 LOG

通常我会将其写成大写字母,但对于类名我会使用首字母大写的方式,对于变量和方法则使用驼峰式命名法。


1
为什么在 Logger 中我们使用private static final Logger log = Logger.getLogger(getClass().getName());? - Shreyos Adikari
2
我不确定 @peter-lawrey 说的是否正确。API中的文件分隔符是小写的。我认为惯例是,如果rhs要执行某些操作(例如获取记录器),则使用小写字母。如果它确实是常量,则大写。 - RNJ

24

没错。根据Sun公司的说法:

请滚动到底部查看常量

常量

已声明为类常量的变量和ANSI常量的名称应全部大写,并用下划线("_")分隔单词。 (为了便于调试,应避免使用ANSI常量。)

static final int MIN_WIDTH = 4;

static final int MAX_WIDTH = 999;

static final int GET_THE_CPU = 1;


2
你能解释一下什么是“ANSI常量”,以及它们与其他static final常量有何不同吗? - Simon Forsberg
似乎不存在任何与Java相关的ANSI常量定义。(来源:SOcoderanch.com) - Brandlingo
@chepner - 很好的评论!目前链接已经失效,但是多亏了你,我能够阅读到相关部分 ;) - Davor
关于分组,你怎么看? 例如:ACTIVE_STATUS_ACTIVE,ACTIVE_STATUS_INACTIVE。我见过有些人使用两个下划线来分隔组名。像这样:ACTIVE_STATUS__ACTIVE,ACTIVE_STATUS__INACTIVE。这是一种标准用法吗? - Thamidu de Harshitha

4
变量是标识符。
有三种方法来命名标识符:
1. 驼峰命名法:用于命名函数和变量。例如:int streamJavaMethod() 或者 for 变量,arrayBoss。
2. 帕斯卡命名法:用于命名类。例如:class StreamJavaClass()。
3. 大写字母命名法:用于命名常量。例如:PIE。
虽然这些只是命名约定,没有必要遵循严格的规则。但专业的 Java 程序员都会使用它们。

4
许多这样的命名规范是在集成开发环境(IDEs)普及之前创建的。如今,静态常量将与局部变量以不同的颜色显示,因此使用特定的命名约定来识别它们的需求大大降低了。我建议关注可读性,推荐使用驼峰式命名法。回答你的问题,其他答案正确,这确实是正式的约定。 ;)

4
在我看来,为静态常量和局部变量取不同的名称仍然是有用的。 - Simon Forsberg
我认为,使用大写常量可以增强可读性,当然现代IDE也有所帮助。有些符号表示应该在成员变量前加上“m”,例如mMember,但是,在实际修改名称的情况下,我认为使用IDE着色已经足够了。 - JohnyTex

2

通常情况下,当一个变量被声明为static final时,它的名称应该用所有大写字母书写,单词之间用下划线分隔,就像你所展示的那样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接