承诺的JavaScript命名约定?

时间:2013-01-10 21:12:27

标签: javascript naming-conventions deferred promise

我认为为JavaScript变量设置一个包含承诺的命名约定会很有用。我一般不喜欢或提倡超出编程语言标准的命名约定,但是在编程风格中,promises作为函数参数传递,通常难以一目了然地知道变量是持有承诺还是“真实的东西”。

我个人使用promiseOfFoopFoo,但我发现前者有点冗长,而后者则给我匈牙利语的闪回。

是否有常用惯例?

2 个答案:

答案 0 :(得分:17)

这更多地取决于你将如何使用它们,不是吗?

如果你的代码如下:

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,你需要知道哪些函数/方法使用promises,哪些使用对象。

如果您将promises作为回调传递给对象方法,那么您可以愉快地将它们命名为promisetweetLoadingdataParsing或在该特定情境的上下文中有意义的任何内容。

对于showImage的定义,我选择的参数是平坦的,称为promise,因此,如果您正在处理该函数,或者您需要调试一系列内容,你可以看到你看到的第二个它是一个承诺对象。

答案 1 :(得分:0)

我不知道公开会议,但在我自己的代码中使用了以下内容:

  • var dfrd:延迟对象(我不记得在同一范围内需要两个或更多)
  • var p:承诺
  • var p_foo:其中一个名为Promises的
  • var promises:包含Promises的数组或普通对象

例外是jqXHR对象,我将其命名为var jqXHR(同样,我不记得在同一范围内需要两个或更多)。