JavaScriptにおける命名規則については、すでに様々なネット上の記事や書籍などで取り上げられているので、今さらこのブログで新しく紹介するようなものは特に何もないのですが、これらの情報ソースの内容には互いに微妙に異なる部分(内容が競合する部分)もあったりします。
私自身、JavaScriptの命名規則についてはざっくりとは知りつつも、(個人で開発することが多いくせに)プロジェクトが変わる度に微妙に異なる規則でコーディングしていたりと、結構曖昧な状態でここまでやってきてしまいました。
ですので、これらの情報ソースを元にして自分なりのルールを整理しておきたいなと思ったので、ここにまとめておくことにしました。
本エントリは、JavaScript全体に関わるコーディング規約ではなく、あくまでも「命名規則」に絞った内容になっています。自分用のまとめ色が強いエントリになっていますので、ここに書いたことが正解というわけではありませんが、少しでも皆さんの参考になれば幸いです。皆さんも色々な情報を参考にしながら、一番しっくりくるものを採用していくのが良いと思います。
また、「なぜそのような命名規則が良いのか?」といった解説についてはここでは触れていませんので、気になる方は下記の「情報ソース」のサイトを参照してみて下さい。
まぁ、一番重要なのはどういった命名規則を採用するか?ということではなく、採用した命名規則に対して、プロジェクトやチームが一貫して従うことですよね。
情報ソース(参考サイト、書籍)
自分なりの命名規則を整理するにあたって、以下の情報ソースを参考にしました。
- (サイト)Google JavaScript スタイルガイド – 日本語訳
- (書籍)JavaScriptパターン ―優れたアプリケーションのための作法
- (コードチェックツール)JSLint
上記のサイトと書籍をベースにしつつ、JSLintのチェックにも対応できるものを最終的に採用しています。
命名規則一覧
グローバル変数(名前空間)
- lowerCamelCaseを使う
- プロジェクト名やライブラリ名と関連付けられた一意の名前にする
例:myProject.myModule1.bar
定数
- すべて大文字で、単語毎にアンダースコアで区切る
例:CONST_VALUE
関数
- lowerCamelCaseを使う
- 動詞または動詞+名詞となるように命名する
例1:run
例2:getName
オブジェクトのプロパティとメソッド
- lowerCamelCaseを使う
- private なプロパティ、メソッドには名前の末尾にアンダースコアをつける
※JSLintの「dangling _ in identifiers」オプションを true にする必要があります。 - protected なプロパティ、メソッドには(publicと同様に)末尾にアンダースコアをつけない
例1:publicMethodName
例2:privateMethodName_
コンストラクタ関数
- UpperCamelCaseを使う
- 名刺または形容詞+名詞となるように命名する
例:SampleConstructor
ローカル変数
- lowerCamelCaseを使う
- 変数がjQueryオブジェクトである場合は先頭に「$」を付ける
例1:localVariableName
例2:$localVariableName
メソッドと関数のパラメータ
- lowerCamelCaseを使う
- 省略可能な関数の引数は名前の先頭をopt_とする
- 可変長の引数をとる場合は、最後の引数をvar_argsにする。(※ただし参照する際は var_args ではなくarguments を参照すること)
例1:function (param1, opt_param2) {...}
例2:function (param1, opt_param2, var_args) {...}
ファイル名
- 小文字のみ<使用する/li>
- 区切り文字はハイフン(-)のみ使用する
- ファイル名は必ず .js で終わること
例:file-name-like-this.js
列挙型
- UpperCamelCaseを使う
例:EnumNamesLikeThis