JavaScript命名约定

我知道关于哪种命名约定最适合JavaScript存在很多争议(也许不是争议,但至少是争论)。

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

我将把我自己的想法放在这里,因为我做JavaScript的时间不长(只有几年),而且我刚刚收到一个请求,要求我创建一个带有命名约定的文档,用于我们工作中的项目。所以我一直在搜索,有很多不同的观点。

我读过的关于JavaScript的书籍本身也使用不同的命名约定,但它们都同意一点:“找到适合你的,并坚持下去。”但现在我读了这么多,我发现我喜欢一些其他的方法比我现在习惯的要好一点。

173232 次浏览

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

我认为除了一些语法限制之外;命名约定推理是完全独立于语言的。我的意思是,支持c_style_functions和JavaLikeCamelCase (上驼背箱)的参数同样可以以相反的方式使用;只是语言使用者倾向于追随语言的作者。

话虽如此,我认为大多数库都倾向于大致遵循Java上驼峰格式的简化。我觉得道格拉斯·克罗克福德的建议对我来说足够有品位。

这是一个个人问题,可能取决于你的工作方式。

有些人喜欢把变量类型放在变量的开头,比如“str_message”。有些人喜欢在单词之间使用下划线(&;my_message&;),而另一些人喜欢用大写字母(&;mymessage &;)

我经常和其他人一起使用巨大的JavaScript库,所以函数和变量(除了函数内部的私有变量)必须以服务的名称开始,以避免冲突,如“guestbook_message”。

简而言之:英文,小写,组织良好的变量和函数名是我的首选。名字应该描述它们的存在,而不是简短。

正如Geoff所说,Crockford说是好的。

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

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

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

你可以遵循谷歌JavaScript风格指南

一般来说,使用函数nameslikethis (低驼箱)、变量lenameslikethis、类nameslikethis (上驼背箱)、枚举nameslikethis、方法nameslikethis和SYMBOLIC_CONSTANTS_LIKE_THIS。

看到JavaScript样式指南和美化器的一个漂亮的集合。

我想尝试的一个惯例是用'the'前缀命名静态模块。看看这个。当我使用别人的模块时,不容易看到我应该如何使用它。例如,

define(['Lightbox'],function(Lightbox) {
var myLightbox = new Lightbox() // I am 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
})