Javaプログラムを書く上で守るべき一般的な指針をまとめておきます。
Java言語の命名指針(ルール)
おおまかに以下のルールで命名することができます。
- すべてのUnicode文字が利用できる
- 日本語(マルチバイト文字列)なども利用できるが慣例的に以下のみで構成することが多い
- 英数字
- アンダースコア( _ )
- 日本語(マルチバイト文字列)なども利用できるが慣例的に以下のみで構成することが多い
- 先頭文字に数字は使えない
- 文字数制限はない
- 大文字と小文字は区別される
- 予約語は使えない
- (参考)予約語一覧:Javaの予約語
1. クラス名
- Pascal記法
- 先頭を大文字
- それ以外は小文字
- 言葉の区切りは大文字
例
・PermissionsIntro
・AsyncTask
・FileCopy
・MainActivity
2. メソッド名
- camelCase記法
- 先頭を小文字
- 以降も小文字
- 言葉の区切りは大文字
- 予約語ではない英単語と略語を組み合わせることが多い
例
・ fileSend()
・ checkVersion()
・ addItems()
・ showActionbar()
2.1 フィールドの値に対する取得と設定メソッド
- フィールドの値を取得するメソッド: 先頭を
get
- フィールドの値を設定するメソッド: 先頭を
set
- 以降,camelCase記法
例
・getCount()
・setDate()
・setName()
2.2 boolean変数を返すメソッド
- メソッド名が命題を表すように命名する
- is + 形容詞
- has + 過去分詞
- can + 動詞
例
・isEmpty()
・hasChanged()
・canAccess()
3. 定数名
- すべて大文字
- 複合文字の場合は区切りをアンダースコア "_" で結合。(スネークケース記法)
例
・LENGTH
・MIN_VALUE
・DATABASE_PATH
4. 変数名(フィールド名)
- すべて小文字
- 複合文字の場合は区切りを大文字する
例
・count
・startDate
・errMsg
5.識別子の対称性
- 英単語の対称性を意識して命名する
- add/remove
- insert/delete
- get/set
- start/stop
- begin/end
- send/receive
- first/last
- get/release
- put/get
- up/down
- show/hide
- source/target
- open/close
- source/destination
- lock/unlock
- old/new
- next/previous
6.ちょっと気にするとよさそうな点
頭の片隅に置いておくと、良い命名が出来そうなポイントです。
- 名前を見るとデータの中身が想像できる
- 良い:
userName
,title
- 微妙:
a
,b
,AClass
- 良い:
- 長すぎない・短すぎない
- 良い:
keyword
- 微妙:
kw
,keywordForFoodDatabaseSearch
- 良い:
- ローマ字を使用しない
- 良い:
resultScore
,userName
- 微妙:
kekkaNoSukoa
,Namae
- 良い:
- 決められた記法で統一する
- 良い:
resultValue
/lastName
/phoneNumber
- 微妙:
result_value
/LastName
/Phone_Number
- 良い:
- 思いやりのあるコードを書く
- アスラムカーン(Aslam Khan)氏のエッセイの一部の言葉です
誰かが書いたコードの質は、必ず他の誰かが書くコードの質に影響します。もし私が質の低いコードを書いてしまったとしたらどうでしょうか。その場合は、誰か他の人が非常に質の高いコードを書いていたとしても、私のコードを利用した途端に悪影響を受け、同じレベルにまで質が低下してしまいます。(中略) 大事なのは、コードそのものの質ではなく、他への影響です。他人の存在を意識すれば、他人の書くコードにも当然良い影響を与えることになります。チームの同僚のことを考え、思いやりを持ってコードを書けば、それは同僚たちにとって価値あるコードとなり、いずれ自分にも良い影響となって返ってきます。どんなかたちであれ、そのコードに触れた誰もが、触れる前より良い人間、良いプログラマになれる、そういうコードを書くようにすべきでしょう。
他者への思いやりを意識したコーディング - プログラマが知るべき97のこと
7. その他
- 変数名で迷ったら → codic – デベロッパーのためのネーミング辞書