Java Singleton类最终变量命名约定

时间:2018-05-05 00:00:59

标签: java naming-conventions naming

我理解实例级final变量遵循驼峰式命名约定,但我想知道是否应该是Singleton类的情况。

您会将Singleton类中的final视为常量,并遵循常量命名约定,如下所示:

private final SomeObject SOME_OBJECT;

或者,您是否会按照正常的变量命名约定命名为camel case?

private final SomeObject someObject;

这在多个代码评论中不断出现,我总是有一些灰色区域。感谢对此的任何想法。

2 个答案:

答案 0 :(得分:2)

根据典型的Java编码标准,ALL_CAPS标识符样式是为static final常量(和enum常量...)保留的。在您的情况下,变量是final但不是static,因此变量的常规规则的例外不适用。

这是我的解释,我认为最常见的解释。这不是唯一的解释。但是,您/您的团队可以选择以不同方式解释约定,甚至完全忽略它们 1

最重要的是在您/您的团队/您的组织/公共代码库之间保持一致。

1 - ...虽然后者不明智,IMO,

答案 1 :(得分:0)

这是一个更多基于社区意见而非基于既定标准的主题。

如果它是在类级别,并且它是最终的,并且只有一个实例,假设你使用它作为常量,在我看来,我会使用Underscore,因为它基本上是一个常量,但它在运行时初始化。

class AClass {
    private final SomeObject SOME_OBJECT;
    private initInstance() {
        SOME_OBJECT = ...;
    }
    ...
}

这可能是一个有用的链接: https://softwareengineering.stackexchange.com/questions/252243/naming-convention-final-fields-not-static

这个链接归结为什么,虽然任何答案都是固执己见的,但一个好的启发式方法就是问自己“这表现得像一个常数吗?还是表现得像一次写字一样?”

如果它是在运行时创建的常量DO_THIS

如果它是您写入一次的字段,但稍后进行操作doThis