序文
良いJavaScriptの執筆習慣の利点は自明です。今日、Bin GoはDojo JavaScriptプログラミングの仕様をお勧めします。これは非常に優れたJavaScriptプログラミングスタイルの仕様です。 JavaScriptを作成するために、この仕様から学ぶことをお勧めします。翻訳をしてくれたI.Feelingluckyに感謝します。
順序
読みやすさを向上させると、このガイドに対する暴力が許可されます。
他のコードが読みやすいすべてのコードを簡単にする必要があります。
クイック読み取り参照
コアAPI次のスタイルを使用してください。
| 構造 | ルール | コメント |
| モジュール | 小文字 | 複数のセマンティクスを使用しないでください(複数の単語は決してありません) |
| 親切 | キャメル | |
| パブリック方法 | ミックス | 他の外部呼び出しは、このスタイルでlower_case()を使用することもできます |
| パブリック変数 | ミックス | |
| 絶え間ない | ラクダまたは首都 |
以下は必要ありませんが、使用することをお勧めします。
| 構造 | ルール |
| プライベート方法 | 混合、例: _mixedcase |
| プライベート変数 | 混合、例: _mixedcase |
| メソッドパラメーター | 混合、例: _mixedcase、mixedcase |
| ローカル変数 | 混合、例: _mixedcase、mixedcase |
命名仕様
1.変数名は小文字でなければなりません。
2。クラスの命名は、次のようなラクダの命名ルールを使用します。
アカウント、EventHandler
3。定数は、オブジェクト(クラス)または列挙変数の前面で宣言する必要があります。列挙変数の命名には実際的な重要性が必要であり、そのメンバーはラクダの命名ルールを使用するか、資本化する必要があります。
コードコピーは次のとおりです。
var nodeTypes = {
要素:1、
ドキュメント:2
}
4。略語された単語は、資本名を変数名として使用できません。
getinnerhtml()、getXml()、xmldocument
5。メソッドのコマンドは、動詞または動詞のフレーズでなければなりません。
obj.getSomeValue()
6.公開クラスの命名は、混合名(混合ケース)を使用して名前を付けなければなりません。
7。CSS変数の名前は、対応する同じパブリッククラス変数を使用する必要があります。
8。プライベートクラスの変数属性メンバーは、混合名(混合ケース)と下線(_)で名前を付けなければなりません。例えば:
コードコピーは次のとおりです。
var myclass = function(){
var _buffer;
this.dosomething = function(){
};
}
9.変数がプライベートに設定されている場合、その前に強調する必要があります。
this._someprivatevariable = statement;
10。一般的な変数は、名前と一致するタイプ名を使用する必要があります。
Settopic(トピック)//可変トピックはタイプトピックの変数です
11.すべての変数名は英語名を使用する必要があります。
12.変数に広い範囲(大きなスコープ)がある場合、グローバル変数を使用する必要があります。現時点では、クラスのメンバーとして設計できます。相対スコープが小さいまたは私的変数の場合、簡潔な単語を使用して名前を付けます。
13.変数が暗黙の返品値を持っている場合、同様の方法の使用を避けます。
gethandler(); // getEventHandler()の使用を避けます
14。パブリック変数は、次のような意味の曖昧さを避けるために、独自の属性を明確に表現する必要があります。
MouseEventHandler
、mseevthdlrではありません。
もう一度この規定に注意してください、そうすることの利点は非常に明白です。表現によって定義された意味を明確に表現できます。例えば:
dojo.events.events.events.mouse.mouseventhandlerの代わりにdojo.events.mouse.handler //
15。クラス/コンストラクターは、基本クラスを拡張する名前を使用して名前を付けて、基本クラスの名前を正しくかつ迅速に見つけることができます。
EventHandler
uieventhandler
MouseEventHandler
基本クラスは、その特性を明確に説明しながら、命名を減らすことができます。
Mouseuieventhandlerとは対照的に、MouseEventhandler。
特別な命名仕様
「get/set」という用語は、プライベート変数として定義されていない限り、フィールドにリンクしないでください。
「IS」の前にある変数名は、ブール値である必要があり、「has」、「can」、または「suff」であることができます。
変数名として「計算」という用語は、計算された変数である必要があります。
変数名として「検索」という用語は、完成した変数である必要があります。
変数名として「初期化」または「init」という用語は、インスタンス化された(初期化)クラスまたは他のタイプの変数である必要があります。
UI(ユーザーインターフェイス)制御変数の後に、コントロールタイプの名前、たとえば、reptcombobox、topscrollpaneが続く必要があります。
複数の数字には、その共通名条約が必要です(元のテキスト:複数形式を使用してコレクションの名前を付ける必要があります)。
「num」または「count」で始まる変数名は、従来の数値(オブジェクト)です。
繰り返し変数は、「I」、「J」、「K」(そのような)などの名前の変数を使用することをお勧めします。
補足条件は、次のような補足語を使用する必要があります。
可能であれば略語を使用してみてください。
たとえば、ブール変数名のあいまいさを避けてください。
ISNOTERROR、ISNOTFOUNDは違法です
エラークラスでは、変数名に「例外」または「エラー」を追加することをお勧めします。
メソッドがクラスを返す場合、その名前で何を返すかを示す必要があります。それがプロセスである場合、それが何をしたかを示す必要があります。
書類
インデントに4つの空白のタブを使用してください。
エディターがファイルタグをサポートしている場合は、次の行を追加して、コードを読みやすくします。
// VIM:TS = 4:NOET:TW = 0:
翻訳者のメモ:外国人はVIMエディターをより頻繁に使用するため、この記事に従うことを選択できます。
コードの折り畳みは、完了して論理的でなければなりません:
コードコピーは次のとおりです。
var someExpression = expression1
+ expression2
+ expression3;
var o = someobject.get(
式1、
式2、
式3
);
注:式のインデントは、変数宣言と一致する必要があります。
注:関数のパラメーターは明示的にインデントする必要があり、インデントルールは他のブロックと一致しています。
変数
レイアウト
ピース
通常のコードスニペットは次のようになります:
コードコピーは次のとおりです。
while(!isdone){
dosomething();
isdone = moretodo();
}
IFステートメントは次のようになります。
コードコピーは次のとおりです。
if(somecondition){
ステートメント;
} else if(someothercondition){
ステートメント;
} それ以外 {
ステートメント;
}
声明は次のようになります。
コードコピーは次のとおりです。
for(初期化;条件;更新){
ステートメント;
}
whileステートメントは次のようになります:
コードコピーは次のとおりです。
while(!isdone){
dosomething();
isdone = moretodo();
}
do…whileステートメントは次のようになるはずです:
コードコピーは次のとおりです。
する {
ステートメント;
} while(条件);
スイッチステートメントは次のようになります。
コードコピーは次のとおりです。
switch(条件){
ケースABC:
ステートメント;
//フォールスルー
ケースDEF:
ステートメント;
壊す;
デフォルト:
ステートメント;
壊す;
}
試してみてください...キャッチステートメントは次のようになります:
コードコピーは次のとおりです。
試す {
ステートメント;
} catch(ex){
ステートメント;
} ついに {
ステートメント;
}
シングルラインである場合、声明の間、または声明についてもブラケットに含める必要がありますが、次のように書くことができます。
if(条件){ステートメント; }
while(条件){ステートメント; }
for(intialization; condition; update){ステートメント; }
空白
コメント
書類
以下は、いくつかの基本的な関数またはオブジェクトの説明方法を提供します。
概要:この関数またはオブジェクトの実装の目的の簡単な説明
説明:この関数またはクラスの簡単な説明
return:この関数が返すものを説明します(返品タイプは含まれません)
基本的な関数情報
コードコピーは次のとおりです。
関数(){
//概要:まもなく、ニュージャージーのすべてを支配するのに十分な宝物があります。
//説明:または、新しいルームメートを手に入れることができます。
//見て、あなたは彼を見つけに行きます。彼はあなたに怒鳴りません。
//私が今までやろうとしているのは彼を笑顔にして歌うことだけです
//彼と彼の周りで踊ると、彼は私に横たわります。
//彼は、そこにカーニバルがあったので、冷凍庫に入るように私に言った。
//返品:見て、バナナラマテープ!
}
オブジェクト関数情報
返品値の説明はありません
コードコピーは次のとおりです。
{
//概要:ディングル、レインボーマシンをエンゲージしてください!
// 説明:
//何を教えてください、私は私がいたらいいのにと思います - ああ、それはビーム、
//そのように来る、速度、あなたはそれを調整したいかもしれません。
//それは本当に私の背中に番号を付けました、そこに。つまり、私はしません
//むち打ち症、まだ、それは少し遠すぎると言いたい、
//しかし、あなたは負傷しましたよね?
}
機能の宣言
場合によっては、関数の呼び出しと宣言が見えません。この場合、関数に指示などを含める方法はありません。この状況に遭遇した場合、クラスを使用して関数をカプセル化できます。
注:この方法は、関数の初期化されたパラメーターなしでのみ使用できます。そうでない場合、それらは無視されます。
コードコピーは次のとおりです。
dojo.declare(
「フー」、
ヌル、
{
//概要:Phew、これは確かにリラックスしています、フロック。
// 説明:
//何千年も前、夜明け前
//私たちが彼を知っていたように、クラウスのサンタirがいました:
//類人猿のような創造性は、粗野で無意味なおもちゃを作ります
// dino-bonesの、チンパンジーのような創造性でそれらを投げます
//彼らがどのように振る舞ったかに関係なく、しわが寄った手
//前年。
//返品:カールが宇宙のエルフィンの長老たちに料金を支払っていない限り。
}
);
<h3>パラメーター</h3>
<ol>
<li>単純なタイプ
単純なタイプのパラメーターは、関数パラメーター定義で直接コメントして説明できます。
[cc lang = "javascript"] function(/*string*/ foo、/*int*/ bar)...
可変型パラメーター
参照用のいくつかの修飾子を次に示します。
?オプションのパラメーター
...顔のパラメーター範囲は不確かです
配列
function(/*string?*/ foo、/*int...*/ bar、/*string []*/ baz)...
グローバルパラメーターの説明
説明を追加する場合は、それらを初期化ブロックに移動できます。
基本情報形式は次のとおりです。 * key *説明フィールド( * key *説明文)
パラメーターと変数の形式は次のとおりです。*key*〜*type*〜説明フィールド(*key*〜*type*〜説明文)
注:*キーワード*および〜*type*〜は、任意の文字と番号で表現できます。
コードコピーは次のとおりです。
function(foo、bar){
// foo:文字列
//最初のパラメーターであるために使用されます
// bar:int
// 2番目のパラメーターであるために使用されます
}
変数
インスタンス変数、プロトタイプ変数、および外部変数の宣言は一貫しているため、変数を宣言および変更する多くの方法があります。特定の定義とポジショニングは、変数が表示される最初の場所で変数の名前、タイプ、スコープ、およびその他の情報を示す必要があります。
コードコピーは次のとおりです。
function foo(){
// mystring:文字列
//時間:int
// mystringを印刷する回数
//セパレーター:文字列
// mystringの間に何を印刷するか*
this.mystring = "Placeholder Text";
this.times = 5;
}
foo.prototype.setstring = function(mystring){
this.mystring = mystring;
}
foo.prototype.tostring = function(){
for(int i = 0; i <this.times; i ++){
dojo.debug(this.mystring);
dojo.debug(foo.separator);
}
}
foo.separator = "=====";
オブジェクトの変動コメント
オブジェクトの値と一致する注釈方法は、宣言するときなど、使用する必要があります。
コードコピーは次のとおりです。
{
//キー:文字列
//単純な値
キー:「価値」、
// key2:文字列
//別の単純な値
}
返品値
関数は複数の異なる(タイプ)値を同時に返すことができるため、各戻り値を返すタイプのコメントに追加する必要があります。コメントはちょうどその行にコメントされています。すべての戻り値が同じタイプの場合、返されたタイプが指定されています。複数の異なるリターン値がある場合、返品タイプは「混合」としてマークされます。
コードコピーは次のとおりです。
関数() {
if(arguments.length){
「あなたは議論を渡した」を返します。 // 弦
} それ以外 {
falseを返します。 // boolean
}
}
pseudocode(議論する)
この関数とクラスの関数プロセスの説明を関数またはクラスに追加する必要がある場合があります。これを行う予定がある場合は、 /*=======(=文字が5回以上表示されるはずです)を使用できます。これの利点は、これらのことをコードに追加する必要がないことです(翻訳者の注:元の著者はコード管理システムを意味する場合があります)。
このようにして、 /*=====および=====* /に非常に長いコメントがあります。関数が調整された後に削除するかどうかを検討できます。
コードコピーは次のとおりです。
/*=======
module.pseudo.kwargs = {
// url:string
//ファイルの場所
url: ""、
// MIMETYPE:文字列
// text/html、text/xmlなど
MIMETYPE: ""
}
=====*/
function(/*module.pseudo.kwargs*/ kwargs){
dojo.debug(kwargs.url);
dojo.debug(kwargs.mimeType);
}
オリジナルリンク:http://dojotoolkit.org/developer/styleguide
翻訳:I .feelinglucky {at} gmail.com http://www.gracecode.comから