很难找到信息的javascript的一个方面是套管实践。通过套管实践,我的意思是套管样式(即驼峰案例,pascal-case等)应该用于哪些元素(构造函数,私有函数,公共函数)。
我听过的唯一规则是关于YUI剧院的道格拉斯克罗克福德演讲,指出构造函数应该是唯一以大写字母开头的函数。
除此之外,似乎没有很多人在javascript中遵循的套管标准。
有没有人知道javascript的套管最佳做法,以及为什么使用它们是合理的?
您是否也遵循.js文件的套管样式?
答案 0 :(得分:33)
我更喜欢PascalCase用于构造函数,而camelCase用于其他所有内容。这就是JS标准库使用的风格,以及到目前为止我见过的每个JS框架:)
我对从web提供的所有文件使用all_lowercase命名约定。那里有一些不区分大小写的文件系统。
答案 1 :(得分:14)
核心语言使用InitialCaps作为构造函数(例如Object,Date,Number,RegExp),使用camelCase作为方法和属性(例如something.toString(),quantity.valueOf(),regexp.ignoreCase)。 DOM规范和实现(例如HTMLElement.setAttribute())也遵循此约定。所以采用相同的惯例是最有意义的,或者你完成了一个可怕的风格混乱,如:
var number_of_fish_requested = document.getElementById("fish").value;
var fish_count = parseInt(number_of_fish_requested, 10);
这变得完全令人困惑,不仅要打字,更重要的是阅读。
(您花费更多时间阅读代码,尝试调试或修改代码,而不是首先编写代码。)
答案 2 :(得分:2)
到目前为止,我所看到的是套管标准的多样性。
就我而言,我使用C#样式来编写我的JavaScript代码。我经常使用类(函数作为类,通常没有独立的函数。) 因此,我将PascalCase用于类名,公共方法,属性和所有全局变量,并使用camelCase作为参数,局部变量和私有函数。这在某种程度上反映了我的共同环境,有助于区分变量范围。 我还倾向于将我的类函数保存在一个与我的ClassName(ClassName.js,ClassName.min.js)同名的单独文件中。
这是我的方法。
我还注意到Java程序员遵循Java规则(并且编写风格类似于Java语言。)Ruby on Rails程序员遵循他们自己的命名标准,例如underscore_separated_var_name
。
此外,正如您所提到的,在非常流行的框架中,有很多人使用pascalCase,其作者来自不同的社区,如Linux /开源社区和Microsoft开发人员(jQuery,knockout.js,JSJaC等)。 )
我应该注意到,当涉及到JS时,这些方法都没有错误或正确。命名约定和文件结构的主要目的是可读性。如果您是一致的,那么您将来和您的开发人员将很快理解并继续您的代码。
答案 3 :(得分:1)
除了构造函数之外,我更喜欢camelCase。原因(我相信这就是为什么Crockford先生也提出这个原因)是因为在其他语言中,例如Java,约定是大写你的类,这是构造函数的用途。
那是我的0.02美元。
答案 4 :(得分:1)
所有带有下划线分隔符的小写字母最容易阅读;它遵循自然语言。 “最好的”会让你参加圣战;现实情况与其他设计问题无关,但它是一个容易分化的话题。
ALongButNotReallyReadableIdentifier
an_even_longer_but_completely_readable_identifier
答案 5 :(得分:-1)
接受的答案是正确的,但有一些例外。 在window.JSON和window.XMLHttpRequest中,术语大写。
大多数人也使用PascalCase作为Javascript中的枚举类型对象和大写的值。有时名称空间也在PascalCase中完成。
例如: MyCompany.Web.UI.MyComponent.ThemeOption = {BLACK:0,SILVER:1,BLUE:2}