2.命名規約
命名規約の基準として、各環境での OS がファイル名などに認めない文字列などは利用せず、基本的にはアルファベットのみで命名することとし、必要に応じて数字を利用することも認めます。命名においては
ローマ字による命名は不可とし、すべて英単語に翻訳した形で命名することとします。その際には必ず辞書等で英単語のスペルチェックを行い、スペルミスのないようにしましょう。
2.1.パッケージ名
1.1 にて定めたパッケージ構成に従い、「.」で区切って記述します。
com.okapiproject.framework
2.2.ファイル名
public なクラス名はコンパイラの規定によりファイル名と同じでなければなりません。(大文字、小文字の区別を含む)
ファイル名:DateEdit.java の場合
public class Dateedit … ×
public class DateEdit … ○
2.3.クラス名
先頭大文字。それ以後は(英単語として)区切りを大文字とします。また、単語は省略してはいけません。
FirstDayAndLastDayCalculation … ○
F-day&L-dayCalculation … ×(省略した単語を使用してはいけない)
2.4.テストクラス
JUnit によるテストクラスを用意する場合、JUnit の規定によりクラス名に Test の文字が含まれることが要求されるが、この場合のクラス名は「クラス名 + Test」とします。
DateEdit クラスのテストクラスの場合、DateEditTest クラスとします。
2.5.例外クラス名
既に用意された例外クラスではなく、独自に例外クラスを作成する場合は最後を Exception としたクラス名とします。
DateEditException
2.6.インターフェース名
クラス名に準じて命名し、最後に Interface をつけます。
DocumentHandlerInterface
また、Interface を実装したクラスに能力を与える Interface の場合、その能力を示す動詞に -able を接尾した形容詞とします。
Runnable, Clonable, Serializable. …
2.7.抽象クラス名
抽象クラスはクラス名に準じて命名し、最後に Abstract をつけます。
BusinessApAbstract
抽象クラスに適当な名前が無い場合、Abstract から始まりサブクラス名を連想させる名称をつけます。
AbstractBeforeDateCalculation
2.8.定数(static final)
すべて大文字で単語を「_」でつないだ名称をつけます。
private static final String ACCESS_ERROR_MESSAGE = "E010100";
2.9.メソッド名
先頭は小文字で、それ以後はクラス名と同様に英単語としての区切りを大文字にします。略語は使用してはいけません。メソッド名に変数名が含まれる場合は変数の部分は変数名と同じにしておきます。
getDate()
addRestData() … RestData という変数を使用している場合。
2.9.1.ファクトリメソッドの場合
ファクトリメソッドは内部でオブジェクトを new してそのインスタンスを戻り値として返却するものです。このようなメソッドの場合は引数が無い場合は先頭に new をつけ、引数がある場合は create をつけます。
newDate()
createOutputArea(25,25,100,120)
2.9.2.コンバータメソッドの場合
コンバータメソッドというのはオブジェクトを別のオブジェクトに変換するものです。対象のオブジェクト名の先頭に to をつけたものとします。
toStringData()
2.9.3.属性の取得・設定メソッド
一般的に「ゲッター、セッター」「アクセサメソッド」と呼ばれている JavaBeans の構成要素となるメソッドです。取得メソッドでは先頭に get をつけ、設定メソッドでは set をつけたものとします。通例として取得メソッドには引数はなく、設定メソッドに引数を持ちます。
getDate()
setDate(int date)
2.9.4.boolean 変数を返すメソッド
boolean 変数を返すメソッドについては、「is + 形容詞」「can + 動詞」「has + 過去分詞」「三単現(三人称単数現在)動詞」「三単現動詞 + 名詞」のいずれかの名称をつけます。特に動詞は三単現以外の動詞は利用してはいけません。また、true の場合がどちらであるか判別しやすい名前にするために通常は true の場合を名称にします。
isEnabled()
canGet()
hasCanged()
contains()
containsKey()
2.10.変数名全般
- 基本的に日本語名称をローマ字で表記することはせず、必ず英語に訳した形で命名することします。その際にはスペルチェックを必ず行っておくこととします。
- 役割が読み取れる名称とすることとします。誤解や混乱を招くことなどを十分に考慮して命名しましょう。
- 変数名の先頭は小文字で表記し、英単語の区切りごとに大文字で表記するものとします。
- 同様の変数名を多数使用しなくてはならない場合はアンダーバーの後に連番を付与します。
s1, s2 … ×(意味が読み取れない)
startDate, endDate … ○(きちんと変数の意味が読み取れる)
startDate_1, startDate_2, startDate_3 … ○(同じ変数名が続く場合)
2.10.1.boolean 変数名
boolean 型の変数名については boolean 変数を返すメソッドの命名規則(2.9.3)に準ずるものとします。
2.11.名前の対称性
クラス名、メソッド名、変数名などを命名する際には英語の対称性に気をつけるようにしましょう。以下に例を示します。
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
increment / decrement
lock / unlock
old / new
next / previous
2.12.ループカウンタ
for 文などで頻繁に利用されるループカウンタは i, j, k … という名前をアルファベット順に使用します。
for(int i = 0; i < list.size(); i++){
list.get(i);
}
for(int j = 0; j < list.size(); j++){
list.get(j);
}
2.13.スコープが狭い変数
スコープが狭い変数については型名を省略したものを使用してもよいこととします。ただし、その場合は大文字のみ使用することとします。
ServletContext SC = getServletContext();
2.14.大文字と小文字
大文字と小文字は区別して別な文字として扱いますが、それだけで区別される名前をつけることは避けましょう。
getDate(nowDate, NowDate)