書き方 コードの規約的なところ

カテゴリ: How to JavaScript / 公開日: 2012年7月29日(日曜)17:24 / 投稿者: Tom Goodsun

命名規則ってなんだ。

書き方

綺麗なソースコードというのは見ていて気持ちのいいものです。プログラマの世界では、このコードの書き方によって色々な派閥ができたり、その人のカラーが出たりするものなのです。

ここでは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文を見ていただければわかるでしょう。

この場合、私は必ずセミコロンはつけるようにしています。