2013-01-10 12 views
43

約束を保持するJavaScript変数の命名規則を持つと便利だと思います。私は一般的にプログラミング言語の基準を超えて命名規則を好むわけではありませんが、約束が関数の引数として渡されるようなプログラミングの仕方では、変数が約束か本当のものかを一目で分かりやすく伝えることはしばしばあります。約束のためのJavaScript命名規則?

私は個人的にpromiseOfFoopFooを使用しましたが、前者は少し冗長で、後者はハンガリー語からのフラッシュバックです。

よく使用される規約がありますか?

+1

「fooPromise」はどうですか? – jbabey

+13

「Froomise」はどうですか? – elclanrs

+0

私の議決を閉じるための正当な理由が追加されました:確かに条約がありますが、この質問は言葉や略語のさまざまな使い方の賛否両論について多くの議論につながる可能性が非常に高いです。 a * single *事実上の回答。しかし、私はまだそれは良い質問(ちょうどそうでないかもしれない)を見つけるので、私は破れた。だから、+1も。 –

答えて

15

これは、どのように使用するかによって異なりますか?

あなたのコードがどのように見える場合:

その後
var imageLoading = loadImage(url); // returns promise 
imageLoading.done(showImage); 

// imageLoading.done 
// imageLoading.error 
// imageLoading.then 
// imageLoading.success 
// imageLoading.fail 
// ... whatever your library supports 

、私は現在時制の動詞のような約束のものを命名提案するかもしれない...

しかし、あなたが依存ライブラリを構築している場合繰延オブジェクト

// accepts a promise 
var showImage = function (promise) { 
    promise.done(function (img) { /* ...... */ }); 
}; 

続いていればどの方法が約束を取るように理解がありますように、名詞として変数に名前を付けると、特に何の問題もありませんそしてそうではない。

var image = loadImage(url); // returns promise 
showImage(image);   // acts on promise 

あなたのインターフェイスは本当にクリーンで、100%手続き型のコードを書くことができます。 ... buuuut、あなたは、どの関数/メソッドが約束を使用し、どのオブジェクトを使用するかを知る必要があります。

あなたがオブジェクトメソッドの内部で、コールバックとして約束を渡している場合、あなたは喜んでその特定の状況のコンテキスト内で理にかなっているそれらpromiseまたはtweetLoadingまたはdataParsingまたは何でも名前を付けることができます。

showImageの定義では、パラメータIはpromiseと呼ばれるフラットアウトであるため、その機能を使用している場合や、チェーンのデバッグが必要な場合は、それは約束の対象を取った。

+2

+1。私は、**アクション**が約束の意味を忘れている(「データ解析」のような)場合にのみ適用可能ですが、現在の分詞のアイデア(「動詞」)が好きです。多くの場合、約束事は最終結果(データ)に関するものなので、あまりそうでない場合はそうです。私はまた、関数パラメータを 'promise'と命名し、文脈から意味を推測するという考え方が好きです。良いアイデアだが、慣習はない。 – jevakallio

+0

@fencliffの約束は最終的な結果であることがよくありますが、約束をサブスクライブするためのライブラリAPIは、 'tweet.done(コールバック)'対 'loading.done(コールバック)'のアクションに重点を置いています。何らかのアクションに依存しています(時間がたつにつれてポーリングを行っていても)。それはかなり普遍的です。コンベンションの面では、私は実際には見ません。新しいハンガリー語を強制するのではなく、よく読んでいるものを書いたり、標準的な規則として '_00_p'接頭辞/接尾辞を採用してください。より多くの人々は 'prefix_X.done();'より 'loading.finished();'を理解する責任があります – Norguard

+0

あなたがそれについて考えているなら、現在の分詞( '読み込み'、 '取り出し'、 '保存')接頭辞の規則( "p_"など)とは対照的に、接尾辞の表記法( "ing")を効果的に使用しています。間違いなく、英語の読者のための読みやすさの程度を除いて、大きな違いはありません。他の多くの言語では、パーティクルを提示していない、または悪用していないので、これが世界中で使用するための優れたコンベンションであるとは確信していません。 –

0

私は公共条約の知らないが、私自身のコードに次のように使用しています(私はこれまでと同じで2以上を必要と覚えていませんしました繰延オブジェクト:

  • var dfrdスコープ)
  • var p:プロミス
  • var p_foo
  • :いくつかの名前約束
  • var promises
  • :配列またはプレーンオブジェクトを含む約束

例外はjqXHRオブジェクトです。これはvar jqXHRという名前になります(同じ範囲で2つ以上必要なことはありません)。

+0

道が狭すぎる - ハンガリー表記(https://en.wikipedia.org/wiki/Hungarian_notation)にいくらか近いが、 –