JavaScript命名约定

我知道有很多争议(可能没有争议,但至less有争议)关于哪个命名约定是最适合JavaScript的。

你如何命名你的variables,函数,对象等?

我会把自己的想法留在这里,因为我从来没有做过很长时间的JS(只有几年),而且我刚刚收到一个请求,要创build一个命名约定的文档,以便在我们的项目中使用。 所以我一直在寻找(谷歌),有很多不同的意见。

我读过的关于JS的书本身也使用了不同的命名约定,但是他们都赞同这一点:“找出适合你的东西,坚持下去”。但是现在我读了很多东西,发现我像其他一些方法比我现在习惯的更好一些。

我遵循Douglas Crockford的 JavaScript 代码约定 。 我也使用他的JSLint工具来validation这些约定。

正如杰夫所说, 克罗克福德说的是好的。

我遵循的唯一例外(并广泛使用)是使用$ varname来表示一个jQuery(或任何库)对象。 例如

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

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

你可以按照这个谷歌JavaScript风格指南

一般来说,使用functionNamesLikeThis,variableNamesLikeThis,ClassNamesLikeThis,EnumNamesLikeThis,methodNamesLikeThis和SYMBOLIC_CONSTANTS_LIKE_THIS。

编辑:看到很好的JavaScript风格指南和美化的集合。

我认为,除了一些语法限制, 命名约定的推理是非常多的语言独立。 我的意思是,支持c_style_functions和JavaLikeCamelCase的论据同样可以用相反的方式,只是语言用户倾向于遵循语言作者。

话虽如此,我认为大多数图书馆往往大致遵循Java的CamelCase简化。 我发现道格拉斯·克罗克福德给我的build议非常有品位。

我想尝试的一个约定是用“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 }) 

这是一个个人问题,可能取决于你的工作方式。 有些人喜欢把variablestypes放在variables的开头,比如“str_message”。 有些人喜欢在他们的单词之间使用下划线(“my_message”),而另一些人喜欢用大写字母(“myMessage”)将它们分开。

我经常和其他人一起使用大量的JavaScript库,所以函数和variables(函数内部的私有variables除外)必须以服务的名字开头,以避免冲突,就像“guestbook_message”一样。

简而言之,根据我的理解,英语中较小的,组织良好的variables和函数名称是可取的。 名字应该描述他们的存在而不是简短。