static final の命名規約

Java をやってる人なら、定数フィールドの名前はすべて大文字で命名する、というのは常識的なことだと思う。

Java 言語仕様には以下のように記載されている。

ただ、ここでは final にしか触れていない。

Java Code Conventions には以下のように記載があり:

final にすら触れていない。

static final なフィールドはすべて大文字で命名、とはだれが言い出したのだろうか。

なお、Java 言語仕様内で説明で出てくるコードの断片は上記で言及した命名規則を守っていない。

char に s なんて名前を付けているが、Java 言語仕様で謳っている命名規則では、以下のように s は String ではないのか。


上記のように、実は一次ソースが結構グダグダだった命名規則だが、僕個人の習慣は以下の通り。

  • final は camelCase
  • private 以外の static final は UPPER_CASE
  • private static final は camelCase

一番下の習慣は serialVersionUID がその根拠。

Java 言語仕様があいまいで、いろんな考え方の人がいるので、一例ということで。