Skip to content

Latest commit

 

History

History
175 lines (97 loc) · 4.26 KB

standard.md

File metadata and controls

175 lines (97 loc) · 4.26 KB

Javascript コーディング規約(標準スタイル編)

基本ルール

コードレイアウト

  • インデントはホワイトスペース2個。
  • ハードタブは使用しない。
  • 1行の文字数は80文字以下にする。
  • 行末には空白を含めない。
  • カンマの直前にはスペースを挿入しない。
  • 演算子の前後、カンマの後ろにホワイトスペースを1個置く。
  • ()の内側にスペースを挿入しない。

var

  • 変数は必ず var を付けて宣言する。

理由

var を付けないと、その変数はグローバル変数として扱われ、既に定義されている変数を上書きする危険性もある。また、もし宣言をしなければ、その変数のスコープがどの位広いのかが非常に分かりづらい。

定数

  • 定数はNAME_LIKE_THISのような名前にする。
  • オーバーライドできない変数や属性を指定するために @const アノテーションを使う。
  • Internet Explorer がサポートしていない const キーワードは使ってはいけない。

定数値

変数を定数、または変更不可にする場合、CONSTANT_VALUE_CASE.ALL_CAPS のような名前にし、@const (値が上書き不可能であるという)アノテーションを使う。 プリミティブ値(numberstringboolean)は定数値である。 Object が不変であるかどうかは、厳密に定義されていない。第三者が見て、状態変化が分からないのであれば、不変と言えるが、コンパイラーがこれを定義しているわけではない。

セミコロン

行末には必ず付ける。

関数のネスト

してもよい。

ブロック内での関数宣言

してはいけない。

例外の利用

してもよい。

独自の例外の利用

してもよい。

標準的に提供される機能

標準の機能で要件を満たせるのであれば、それを使う。

プリミティブ型のラッパーオブジェクト

利用してはいけない。

階層型のプロトタイプ

なるべく利用しない。

メソッドとプロパティの定義

/** @constructor */
function SomeConstructor() { this.someProperty = 1; }
Foo.prototype.someMethod = function() { ... };

オブジェクトの削除

nullを代入する。

this.foo = null

クロージャー

利用しても良いが、慎重に検討する。

eval() の利用

デシリアライズする時のみ利用可。

with(){} の利用

使ってはいけない。

this の利用

コンストラクター、メソッド、クロージャーの作成時にのみ利用して良い。

for ... in のループ

object / map / hash のキーを用いたイテレーションにのみ利用可能。

連想配列

配列を object / map / 連想配列として利用してはいけない。

複数行文字列

使ってはいけない。

配列・オブジェクトリテラルの利用

しても良い。

組み込みオブジェクトのプロトタイプのオーバーライド

禁止。

Internet Explorer 向けの条件コメント

使用禁止。

動的な DOM の構築

Javascriptの関数内で DOM を新規に構築してはいけない。HTML 内に予め display:none 等にして DOM を構築しておき、それをコピーする等する。

文法

命名規則

toString()メソッドの変更

遅延初期化

してもよい。

スコープの明示化

常にする。

フォーマット

このようにする。 (これから書く)

(括弧)の利用

必要とされるところのみに利用する。

文字列

使えるのであれば"ではなく'を使う。

アクセス制限(private / protected)

JSDoc アノテーション(@private@protected)を使って記述する。

コンパイラーで定義されるものを利用する。

コメント

JSDocで記載する

goog.provide を利用した依存関係の管理

トップレベルでのみ利用する

コンパイル

利用する

小技集

(あとで書く)