未初始化常量的命名约定 Java
Naming Convention for Uninitialized Constants 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
不是常数。它只是一个静态字段,在初始化后不会改变。我会坚持 Sun 命名约定并保留名称 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();
}
}
这样,您会感觉自己在使用常量,并且不会破坏封装。
我将常量命名为 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
不是常数。它只是一个静态字段,在初始化后不会改变。我会坚持 Sun 命名约定并保留名称 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();
}
}
这样,您会感觉自己在使用常量,并且不会破坏封装。