意識の高いLISPマシン

藤原惟/すかいゆき(@sky_y)の技術用ブログ

booleanメソッドのネーミング講座(Java編)

僕は、booleanメソッドを命名するとき、なんとなくis○○とか付けていました。
でも、○○は形容詞なのか、名詞なのか、文なのか?が曖昧なまま、
コードをゴリゴリ書いていました。


命名規則を曖昧にしたまま月日が経つと、
だんだん自分の付けた名前に嫌悪感が募るものです。

「すっきり!」を目指して、命名規則を調べてみました。

調べてみる(Javaを中心に)


命名規約 【Okapi Project】

2.9.4.boolean 変数を返すメソッド
boolean 変数を返すメソッドについては、「is + 形容詞」「can + 動詞」「has + 過去分詞」「三単現(三人称単数現在)動詞」「三単現動詞 + 名詞」のいずれかの名称をつけます。特に動詞は三単現以外の動詞は利用してはいけません。また、true の場合がどちらであるか判別しやすい名前にするために通常は true の場合を名称にします。

isEnabled()
canGet()
hasCanged()
contains()
containsKey()

ブール値を返すメンバー関数の命名規則

Java言語の命名規則では、Fileクラスの『ファイルが存在するかどうか』を調べる関数の名前は、次のようになります。

bool Exists ( );

Java言語では、ブール値を返す関数の名前は、三人称単数の形になります。これを私は、次のように解釈しています。

『ファイルが存在するかどうか』を調べる関数の説明を、英語で書いて見ると、次のようになります。

This function returns true if it exists.

この関数は、これ(ファイル)が存在するならば、真を返す。

このスタイルで説明を書けば、判定をしてブール値を返す関数の名前が三人称単数の形になることが納得できます。

「Is○○」という名前の関数も、同じように解釈できます。例えば、ListインターフェースのisEmpty関数については、説明を英語で書いてみると、次のようになります。

This function returns true if it is empty.

この関数は、これ(リスト)が空っぽならば、真を返す。

要するに

  1. やりたいことを英語で書く
  2. 以下のいずれかで命名する
    • 「is + 形容詞」
    • 「can + 動詞」
    • 「has + 過去分詞」
    • 「三単現(三人称単数現在)動詞」
    • 「三単現動詞 + 名詞」

例(エヴァ風味)

零号機(Unit Zero)が動くかどうかを返す関数(0引数)

主語(receiver)はUnit Zeroとして。

  • 英語:This function returns true if Unit Zero is enabled
  • 変数とメソッド:unitZero.isEnabled()
n号機が動くかどうかを返す関数(1引数)

主語(receiver)はNERVとして。動く=出動させる(call out)と解釈。

  • 英語:This function returns true if NERV can call out Unit N
  • 変数とメソッド:nerv.canCallOutUnit(n)


以上。英語は適当ですw