書き方 コードの規約的なところ
命名規則ってなんだ。
綺麗なソースコードというのは見ていて気持ちのいいものです。プログラマの世界では、このコードの書き方によって色々な派閥ができたり、その人のカラーが出たりするものなのです。
ここではJavaScriptで一般的であろうコードのルールについてお話したいと思います。
クラス名、メソッド名、変数名はJavaに倣え!
Javaというのは強力なプログラミング言語のことです。JavaというワードがついているだけにJavaとJavaScriptを混同している人がいますが、これは全くの別物。
ただ、ビルトイン(組み込み済み)されている関数やクラス、メソッド名はJava言語のそれを習っているように思えます。
これらクラス、メソッド、変数の命名規則は言語によってそれぞれありますが、私はJavaに倣ってつけるようにしています。それはこういったルールです。
-
変数名、メソッド名、関数名
1文字目は英小文字、区切り文字は英大文字(いわゆるローワーキャメルケース)
例: countStudent totalSum salesTax1 -
クラス名(正確にはオブジェク名)
1文字目は英大文字、区切り文字も英大文字(いわゆるアッパーキャメルケース)
例: HelloWorld LayoutManager -
定数名
すべて英大文字、区切りはアンダーバー
例: IMG_PATH STATUS_ACTIVE
JavaScriptは言語仕様的にクラスを作ることはできませんが、オブジェクトは作ることができます。
また、定数もつくることはできません。定数のルールで定義された変数を、定数っぽく使うというのが現状です。
インデントと字下げ
この問題はプログラマによって大きく別れる部分だと思います。私は言語によって使い分けていますが、JavaScriptでは以下のように気を使っています。
まずインデントは、タブ派とスペース派が存在しますね。プログラマの皆さん。私はタブ派ですが、エディタによる誤読を避けるためにはスペースのほうがいいと思っています。この辺は世の中の大きなサービスやライブラリ、プラグインを参考にするとよいでしょう。
いろいろ見てきましたが、JavaScriptはタブ派が多いんじゃないかと思います。(PHPとかはスペース派が多いように感じます。)
if, switch, for, while, functionなどの制御用キーワードで使用するブレースは同じ行内にする。
一般的なプログラムではブロックを表すブレースの開始は次の行に送ることが多いでしょう。
function calcTotal() { // Some codes }
JavaScriptでは「暗黙のセミコロン」という厄介な問題があるのと、意味のない行をつくらいないという私自信のルールでブレースの開始は同じ行に書くようにしています。
function calcTotal() { // Some codes }
JavaScriptで特に問題になるのがreturnです。以下はそれぞれ違う結果となります。
function calcTotal() { return { sum: 100 } } result = calcTotal(); // undefinedが返る function calcTotal() { return { sum: 100 } } result = calcTotal(); // {sum:100}というオブジェクトリテラルが返る
どうでしょうか。
ちょっと出ましたが、JavaScriptは「暗黙のセミコロン」というものがあります。普通C言語的なコードのプログラムでは、処理の行末はセミコロンで終わらせるといったルールがありますが、JavaScriptでは行末のセミコロンは必須ではありません。それは上記のreturn文を見ていただければわかるでしょう。
この場合、私は必ずセミコロンはつけるようにしています。