javascriptのベストプラクティスのケーシングスタイルは何ですか?どうして?
-
06-07-2019 - |
質問
javascriptで情報を見つけるのが難しい側面の1つは、大文字小文字の区別です。ケーシングの慣習とは、どの要素(コンストラクタ、プライベート関数、パブリック関数)にどのケーシングスタイル(つまり、ラクダケース、パスカルケースなど)を使用すべきかを意味します。
聞いた唯一のルールは、YUIシアターに関するダグラス・クロックフォードの講義で、大文字で始まる関数のみをコンストラクターにすべきだというものでした。
それ以外は、javascriptで従う多くのケーシング標準はないようです。
javascriptの大文字小文字のベストプラクティスを知っている人はいますか?また、なぜそれらを使用するのが合理的ですか?
また、.jsファイルは大文字と小文字のスタイルに従っていますか?
解決
私は、コンストラクターにはPascalCaseを、その他のすべてにはCamlCaseを好みます。それが、JS標準ライブラリが使用するスタイルです。これまで私が見たすべてのJSフレームワーク:)
そして、Webから提供されるすべてのファイルにall_lowercase命名規則を使用します。大文字と小文字を区別しない ファイルシステムがあります。
他のヒント
コア言語は、コンストラクター(例:Object、Date、Number、RegExp)にInitialCapsを使用し、メソッドとプロパティ(例:something.toString()、quantity.valueOf()、regexp.ignoreCase)にcamelCaseを使用します。この規則は、DOM仕様および実装(例:HTMLElement.setAttribute())でも守られています。したがって、同じ規則を採用するのが最も理にかなっています。または、次のようなスタイルの恐ろしいミッシュマッシュで終わります:
var number_of_fish_requested = document.getElementById("fish").value;
var fish_count = parseInt(number_of_fish_requested, 10);
入力するだけでなく、もっと重要なことには、読むだけでもまったく混乱します。
(最初に書くよりも、コードの読み取り、デバッグまたは変更の試行に多くの時間を費やします。)
これまで見てきたことは、ケーシング標準の非常に多様性です。
私に関する限り、JavaScriptコードの記述にはC#スタイルを使用しています。私はクラスをよく使用します(クラスとしての機能はよく、通常、独立した機能はありません。) したがって、クラス名、パブリックメソッド、プロパティ、すべてのグローバル変数にはPascalCaseを使用し、引数、ローカル変数、プライベート関数にはcamelCaseを使用します。これはどういうわけか私の共通の環境を反映しており、変数スコープを区別するのに役立ちます。 また、クラス名(ClassName.js、ClassName.min.js)と同じ名前の別のファイルにクラス関数を保持する傾向があります。
これは私のアプローチについてでした。
また、JavaプログラマーはJavaのルールに従っていることに気付きました(そして、記述スタイルはJava言語に似ています。)Ruby on Railsプログラマーは、 underscore_separated_var_name
などの独自の命名基準に従います。
さらに、あなたが言ったように、著者がLinux /オープンソースコミュニティやMicrosoft開発者(jQuery、knockout.js、JSJaCなど)のような異なるコミュニティの出身である非常に人気のあるフレームワークでネーミングにpascalCaseを多く使用する傾向があります)
JSに関しては、これらのメソッドのいずれも間違っていたり、正しいことはありません。命名規則とファイル構造化の主な目的は読みやすさです。もしあなたが一貫していれば、将来あなたとあなたの仲間の開発者はあなたのコードを素早く理解し、それに取り掛かります。
私は、コンストラクター以外のすべてにcamelCaseを使用します。理由(そして、これがCrockford氏がこれを提案した理由だと思います)は、Javaなどの他の言語では、慣習がクラスを大文字化するためです。これがコンストラクタの使用目的です。
それは私の$ 0.02です。
アンダースコア区切り文字を含むすべての小文字が最も読みやすくなっています。それは自然言語に従います。 "ベスト"あなたを聖戦に巻き込むでしょう。現実は、他のデザインの問題ほど重要ではありませんが、分極化するのは簡単なトピックです。
ALongButNotReallyReadableIdentifier
an_even_longer_but_completely_readable_identifier
受け入れられた答えは本当ですが、いくつかの例外があります。 window.JSONおよびwindow.XMLHttpRequestでは、用語は大文字になります。
また、ほとんどの人は、Javascriptの列挙型オブジェクトとその中の大文字の値にPascalCaseを使用します。名前空間はPascalCaseでも実行される場合があります。
例: MyCompany.Web.UI.MyComponent.ThemeOption = {BLACK:0、SILVER:1、BLUE:2}