未初始化常量的命名约定 Java



我命名我的常量,这些常量static final像ALL_UPPER_CASE

但是,有时您需要使用字段作为常量,但不能将其定义为final,因为它需要稍后初始化。

例如:

public class ExampleClass {
     public static final int MAX_LENGTH = 100;
     public static int constantValue;
     public ExampleClass() {
          // ...
     }
     private static void init(boolean condition) {
          if (condition) {
             constantValue = 42;
          } else {
             constantValue = 1;
          }
     }
}

问题:这些是否有任何命名约定?你会怎么做或去做?

我只是想知道一些东西;仅此而已!

从技术上讲,constantValue不是一个常数。它只是一个静态字段,在初始化后不会更改。我会坚持太阳的命名惯例,并保留camelCase这个名字。但是,在您给出的情况下,如果我绝对想证明这是一个常量,我会创建一个枚举:

public enum ExampleEnum {
    TRUE_CONDITION(42), FALSE_CONDITION(1);
    private final int value;
    private ExampleEnum(int value) {
        this.value = value;
    }
    public int getValue() {
        return value;
    }
}

那么 exampleClass 将变为:

public class ExampleClass {
    public static final int MAX_LENGTH = 100;
    private static ExampleEnum myEnum;
    private static void init(boolean condition) {
        if (condition) {
            myEnum = ExampleEnum.TRUE_CONDITION;
        } else {
            myEnum = ExampleEnum.FALSE_CONDITION;
        }
    }
    public static int getConstantValue() {
        return myEnum.getValue();
    }
}

这样,你会觉得你正在使用常量,并且你没有破坏封装。

最新更新