在checkstyle中命名方法局部常量

时间:2014-09-15 10:40:40

标签: java constants checkstyle

如何命名java方法本地常量?

如果常量仅用于方法的上下文中,则应在方法内声明(作为final变量)。但应该使用什么语法?对我来说,最可读的方法是使用ALL_CAPS,但checkstyle似乎不同意:

int compute(int n) {
    final int FACTOR = 27;
    return FACTOR * n;
}

将产生checkstyle警告:

Name 'FACTOR' must match pattern '^[a-z][a-zA-Z0-9]*$'.

另请参阅:What are your thoughts on method scoped constants?

4 个答案:

答案 0 :(得分:3)

目前流行的风格指南

Google Java Style说:

  

局部变量名用lowerCamelCase [...] 编写,即使是最终和不可变的,局部变量也不被认为是常量,不应该被设置为常量。

这也是Checkstyle的 LocalFinalVariableName 检查所采用的惯例。

答案 1 :(得分:1)

  

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

来源:http://www.oracle.com/technetwork/java/codeconventions-135099.html

像这样:

final int FACTOR = 27;
int compute(int n) {
    return FACTOR*n;
}

注意到因为它是一个常量字段,所以我把它移到了方法之外。

编辑2:

在方法中包含最终变量时,您应该遵循局部变量的代码约定:

  

变量 - 除变量外,所有实例,类和类常量都在   带有小写首字母的混合大小写。内部词开头   大写字母。变量名称不应以下划线_或开头   美元符号$字符,即使两者都被允许。

     

变量名称应该简短而有意义。选择一个   变量名应该是助记符 - 即设计用于指示   不经意的观察者使用它的意图。单字符变量名称   应该避免除临时"一次性"变量。共同   临时变量的名称是整数的i,j,k,m和n; C,   d,和字符的e。

因此检查式警告。

答案 2 :(得分:0)

所有局部变量名都应该是小写字母。

int compute(int n) {
final int factor= 27;
return factor*n;

}

如果它的常量在方法外定义它并在ALL_CAPS

中命名

答案 3 :(得分:0)

据我所知,大写符号仅用于公共"常量"因为他们构建了您的类或库的API的一部分。

如果使其成为方法局部变量,则应用变量的常规表示法。它只是"发生"是最后的。