5.2.4 常量名

常量名命名模式为CONSTANT_CASE,全部字母大写,用下划线分隔单词。那,到底什么算是一个常量?

每个常量都是一个静态final字段,但不是所有静态final字段都是常量。在决定一个字段是否是一个常量时, 考虑它是否真的感觉像是一个常量。例如,如果任何一个该实例的观测状态是可变的,则它几乎肯定不会是一个常量。 只是永远不打算改变对象一般是不够的,它要真的一直不变才能将它示为常量。

  1. // Constants
  2. static final int NUMBER = 5;
  3. static final ImmutableList<String> NAMES = ImmutableList.of("Ed", "Ann");
  4. static final Joiner COMMA_JOINER = Joiner.on(','); // because Joiner is immutable
  5. static final SomeMutableType[] EMPTY_ARRAY = {};
  6. enum SomeEnum { ENUM_CONSTANT }
  7. // Not constants
  8. static String nonFinal = "non-final";
  9. final String nonStatic = "non-static";
  10. static final Set<String> mutableCollection = new HashSet<String>();
  11. static final ImmutableSet<SomeMutableType> mutableElements = ImmutableSet.of(mutable);
  12. static final Logger logger = Logger.getLogger(MyClass.getName());
  13. static final String[] nonEmptyArray = {"these", "can", "change"};

这些名字通常是名词或名词短语。