読者です 読者をやめる 読者になる 読者になる

【Effective Java】項目56:一般的に受け入れられている命名規約を守る

Java Effective Java

Java には命名規約(naming convention)があります。 命名規約は2種類に分類されていて、活字的(typographical)と文法的(grammatical)に分けられています。

活字的命名規約はパッケージ、クラス、インタフェース、メソッド、フィールド、型変数を扱っていて、ほとんどの場合、絶対に守るべき規則です。 たとえば「パッケージ名は小文字であるべき」、「クラス名の最初は大文字で始まるべきである」など、命名規約の基本的な項目です。

活字的命名規則の具体例は以下のようになります。

識別子
パッケージ com.google.inject, org.joda.time.format
クラス、インタフェース Timer, FutureTask, LinkedHashMap, HttpServlet
メソッド、フィールド remove, ensureCapacity, getCrc
定数フィールド VALUES, NEGATIVE_INFINITY
ローカル変数 i, xref, houseNumber
型パラメータ T, E, K, V, X, T1, T2

文法的命名規約はより柔軟な規約で、場合によっては守らなくてもよい場合があります。 例えば「インタフェースは able や ible で終わるべき」や「メソッドは動詞/あるいは動詞句で命名される」などです。

文法的命名規約に関連して、特徴的なメソッド命名規則がいくつかあります。

  • オブジェクトの型を変換するメソッドは toType となります(例:toString, toArray)
  • レシーバーオブジェクトの型と異なる型の View を返すメソッドは asType(例:asList)
  • 同じ値をもつ基本データ型を返すメソッドは typeValue です(例:intValue)
  • static ファクトリーメソッドは valueOf, of, getInstance, newInstance, getType, newType です

感想

命名規則がすべて列挙されているわけではないし、特におもしろい事も書かれていなかったので、簡単にまとめて終わり。

次回からは「第9章:例外」。