Java中非静态final变量的命名规范

10

我在一个Java类中有一个方法。

public void myMethod() {
    final String methodName = "myMethod";
}

当我在Sonar中分析此代码时,出现了以下问题:

将此常量名称重命名以匹配正则表达式 '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'

我的目的是将此变量用于Logger语句中,以跟踪应用程序流程。

此变量不是static变量。我已经阅读过https://softwareengineering.stackexchange.com/questions/252243/naming-convention-final-fields-not-static,但我没有得到清晰的图片。有人可以帮助我为我的final(非静态)变量提供适当的命名约定吗?


请参见 https://softwareengineering.stackexchange.com/questions/252243/naming-convention-final-fields-not-static。 - PM 77-1
一个字符串是不可变的。定义一个带有“原始”值的最终变量字符串就像定义一个常量一样。Sonar将其分析为常量,然后要求您匹配常量的命名约定。您应该通过将此局部变量更改为常量并使用正确的命名约定来改进代码。Sonar应该会满意这样做。 - Genu
3个回答

19

你在谈论一个局部变量,它的作用域限定在你的方法内。局部变量遵循大多数Java字段的命名约定,即 camelBack

只有编译时常量(在类级别声明的static final字段)才“需要”大写,并由下划线分隔单词。

一些文档页面:


字段位于类或实例级别,而不是方法级别 - 在此处它们是局部变量。 - tbsalling
@tbsalling 打字错误已修正 - 谢谢。 - Mena
如果这个变量在类级别定义,它应该遵循驼峰命名法吗?public class MyClass() { final String name = ""; } - Ali Dehkhodaei

6

1
在Java中,最终变量的名称通常以大写字母和单词之间带下划线的形式声明。
final String METHOD_NAME = "myMethod";

3
Java中的最终变量必须匹配正则表达式'^[a-z][a-zA-Z0-9]*$'。 - Heril Muratovic
4
我认为这个答案不正确。这是静态常量变量的约定,而不是普通的常量变量。 - ihebiheb

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