キャメル記法について
キャメル記法はJava用だとは思うけど。
昨今の、コード補完機能を持つIDEで開発する際は、とても便利な規約となる。
問題なのは、英語が得意でない日本人が、「動詞」だの「形容詞」だのそこまで深く理解していない言語で、キャメルを考えようとするから、おかしなものばかりが増えていくことに。
■キャメル記法によるメソッド名の命名規約
キャメル記法でメソッド名を考える場合、先頭は「動詞」となり、以降は名詞、形容詞のパスカル形式になる。先頭の動詞が大切。
例)
void getCurrentDirectory(std::string& currentDirectory);
bool isValidDataPath(std::string& checkPath);
基本的には、「○○する」なので、習ってきた英語の範囲で何とかなりそう。問題なのはI/Oの方向は分かるのだが、表現が多いから結局どれが妥当なのか判断が付かない事。例えば、アウトプットする言葉で連想できるのは、export, out, output, …など。
■■対になるサンプル
- set 設定する
- store 格納する
- write 書き込む
- output 出力する
などと、なるが「そこにwriteを使う?」という過ち(というか、読む人の主観)も発生する。あくまでイメージだが、以下の言葉と対応する格納先でどうだろうか。
単語 | 格納先 | サンプル | 対向 |
---|---|---|---|
set | 変数 | setValidNo() | get |
write | ファイル | writeCurrentResult() | read |
store | データベース | storeResponseData() | load |
output | コンソール | outputErrorLog() | input |
send | ネットワーク | sendCompressedPacket() | recv, receive |
■■単独になるサンプル
日本語 | 英語 | サンプル |
---|---|---|
計算する | calc | calcAverageTemperature() |
追加する | add | addFilePath() |
探す | find | findInvalidChar() |
search | searchInvalidChar() | |
置換する | replace | replaceOutputPath() |
取り除く | remove | removeAbstractPath() |
検証する | verify | verifyInputAddress() |
check | checkInputAddress() | |
決定する | apply | applyUserInput() |
decide | decideUserInput() | |
否決する | reject | rejectUserInput() |
deny | denyUserInput() |
■■データベースなどのSQLに対応するメソッド名はそのままSQLライクに作る。
動作 | 英語 | サンプル |
---|---|---|
取得 | select | selectCustomer() |
追加 | insert | insertCustomer() |
更新 | update | updateCustomer() |
削除 | delete | deleteCustomer() |
■■true/falseを返すメソッドに関しては以下のルールが適用できるか検討する。
動作 | 英語 | サンプル |
---|---|---|
これは○○○か? | is | isCurrentData() |
これは○○○を持っているか? | has | hasOddNumber() |
○○○ができるか? | can | canVerifyData() |
■■あまりにも名前が短くて、キャメル形式になれないもの
動作 | 英語 | サンプル |
---|---|---|
コピー | copy | copy() |
移動 | move | move() |
削除 | delete | delete() |
■キャメル記法による変数名の命名規約
変数名は先頭が形容詞となり、以降は形容詞、名詞が続くことになる。先頭の形容詞が重要である。
例)
int currentTemp; // 現在の温度
int previousTemp; // 前回の温度
int averageTemp; // 平均の温度
形容詞 | 英語 | サンプル |
---|---|---|
現在の | current | currentRow |
前の | previous | previousRow |
最大の | max | maxValue |
最小の | min | minValue |
中央の | median | medianValue |
平均の | average | averageValue |
データベースのフィールド名などは名詞をスネーク記法で表現しているものがあるため、キャメル記法ルールをあきらめなければならない。逆にスネーク記法に出会ったら、それはDBフィールド名であると判断することができるため、混在とも言えないと思われる。