一般的に採用されている JavaScript のコーディングスタイルのまとめです。
記述フォーマット
- 一行の最大文字数は
79文字(改行を入れて 80 文字) - インデントはスペース
2つ(複数行にまたがる時は、スペース 4 つにするか、前の行のドット等に合わせる) - ファイルのエンコーディング形式は
UTF-8、改行コードはLF(0x0A)
ドキュメンテーションコメント
ドキュメンテーションコメントは JSDoc で記述します。
/**
* Find a person who has a specified nickname.
*
* @param {String} nickname - The nickname to be searched
* @return {Person} A person if found, null if not found
*/
function findPerson(nickname) {
// ...
return person;
}
命名規則
- クラス:
ClassName - メソッド (public/protected) :
methodName - メソッド (private) :
methodName_ - プロパティ (public/protected):
propName - プロパティ (private):
propName_ - 変数:
varName - 定数:
CONSTANT_NAME
省略形は先頭文字だけ大文字にします。
- Good:
Pdf,Id,Xml,Http - NG:
PDF,ID,XML,HTTP
文字列リテラル
文字列リテラルの定義には、シングルクォーテーションを使います。 これは HTML タグを記述する際に相性がよいからです。 文字列内にシングルクォーテーションが含まれるような場合は、例外的に全体をダブルクォーテーションで囲みます。
クラスの定義方法
(2024 年追記: 現在は class キーワードを使ってクラス定義すればよいです)
JavaScript でクラス(正確にはクラス風のオブジェクト)を定義する方法はいろいろありますが、基本は下記のような形式で定義します。
/** @constructor */
function Foo() {
this.bar = value;
}
Foo.prototype.methodName = function() {
...
};
プライベートなクラス、メソッド、プロパティは @private を付けて、アンダースコアで終えます。
/**
* @private
* @constructor
*/
function PrivateClass_() {
/** @private */
this.privateProp_ = 2;
}
/** @private */
PrivateClass_.privateStaticMethod_ = function() {
..
};
/** @private */
PrivateClass_.prototype.privateMethod_ = function() {
..
};
その他
無名の関数オブジェクトで済ませられるような場所でも、デバッグしやすくするために、できるだけ関数には名前を付けておくようにします。
参考になるコーディングスタイル
- Google JavaScript Style Guide
- 一行原則 80 文字以内。
- インデントはスペース 2 文字。
- Node.js Style Guide
- 一行原則 80 文字以内。
- インデントはスペース 2 文字。
- jQuery のコーディングスタイル
- カッコ内のスペースの使い方などが、マイナーなのでちょっと嫌。
- 一行原則 80 文字以内。
- インデントはスペース 4 つ(JavaScript の世界では少数派)。