web-dev-qa-db-ja.com

JavaScriptの命名規則

どの命名規則がJavaScriptに最適であるかについて、多くの論争(少なくとも論争ではなく、少なくとも議論)があることを知っています。

変数、関数、オブジェクトなどにどのように名前を付けますか?

私は長い間(数年だけ)JSをやっていないので、これについては自分の考えを残します、そして私は職場でのプロジェクトで使用される命名規則を使用してドキュメントを作成するように要求されました。だから私は(グーグルで)探し回っていて、いろいろな意見があります。

私がJSで読んだ本も、それぞれ異なる命名規則を使用していますが、それらはすべて、「あなたに合ったものを見つけて、それに固執します」という1つのビットに同意します。他のいくつかの方法と同じように、私が今まで使っていた方法よりも少し良くなっています。

245
peirix

私は Douglas Crockfordのコード規約 に従ってください。また、彼の JSLint ツールを使用して、これらの規則に従って検証します。

197
Geoff

Geoffが言うように、 Crockfordが言う は良いことです。

私が従う(そして広く使用されている)唯一の例外は、$ varnameを使用してjQuery(または任意のライブラリ)オブジェクトを示すことです。例えば。

var footer = document.getElementById('footer');

var $footer = $('#footer');

158
Deebster

これに従うことができます Google JavaScript Style Guide

一般に、functionNamesLikeThis、variableNamesLikeThis、ClassNamesLikeThis、EnumNamesLikeThis、methodNamesLikeThis、およびSYMBOLIC_CONSTANTS_LIKE_THISを使用します。

編集: JavaScriptスタイルガイドと美化 のニースコレクションを参照してください。

105
Pavel Hodek

試してみたい規則の1つは、「the」プレフィックスを使用して静的モジュールに名前を付けることです。これをチェックしてください。他の人のモジュールを使用する場合、どのように使用するかを確認するのは簡単ではありません。例えば:

define(['Lightbox'],function(Lightbox) {
  var myLightbox = new Lightbox() // not sure whether this is a constructor (non-static) or not
  myLightbox.show('hello')
})

私は、静的モジュールがそれらの存在を示すために「the」を使用する規則を試みることを考えています。誰もこれよりも良い方法を見ましたか?次のようになります。

define(['theLightbox'],function(theLightbox) {
  theLightbox.show('hello') // since I recognize the 'the' convention, I know it's static
})
9
SimplGy

構文の制限に加えて、命名規則の推論は、ほとんど言語に依存しません。つまり、c_style_functionsとJavaLikeCamelCaseを支持する引数は、逆の方法でも同様に使用できます。それは、言語ユーザーが言語作成者に従う傾向があるということです。

そうは言っても、ほとんどのライブラリはJavaのCamelCaseの単純化にほぼ従う傾向があると思います。 Douglas Crockfordのアドバイス 私には十分な味がします。

6
Javier

それはあなたがどのように働いているかに依存する個々の質問です。 「str_message」のように、変数の先頭に変数の型を入れたい人もいます。また、単語の間にアンダースコアを使用する人( "my_message")を好む人もいれば、大文字( "myMessage")で区切るのを好む人もいます。

私は頻繁に他の人と巨大なJavaScriptライブラリを使用しているため、関数と変数(関数内のプライベート変数を除く)は、「guestbook_message」のような競合を避けるためにサービス名から始めなければなりません。

要するに、私によれば、英語で、小文字で、よく整理された変数名と関数名が望ましいです。名前は短くするのではなく、その存在を説明する必要があります。

2
Ivar