【问题标题】:JavaScript accessor property naming conventionJavaScript 访问器属性命名约定
【发布时间】:2014-02-04 21:22:54
【问题描述】:

我来自 .NET 背景,Microsoft 似乎喜欢以大写字母开头的方法和属性。例如PrintMessage();

JavaScript 似乎遵循 Java 的命名规则,即函数名称应以小写字母开头。例如printMessage();

JavaScript(ECMAScript 版本 5)现在支持访问器属性,类似于 .NET 中的属性。同样,.NET 喜欢以大写字母开头的属性。例如Message

所以我的问题是,JavaScript 应该为属性使用哪种命名约定?

例如Messagemessage?

我已经浏览了一些样式指南,但我对属性的了解不多。

【问题讨论】:

  • 我确信这是一个非常自以为是的主题,但通常以大写字母(和驼峰式)开头构造函数的名称,否则以小写字母开头并使用驼峰式。 (很笼统)
  • 匈牙利表示法,对于松散类型的语言来说不是一个坏主意,但它是一个有争议的问题。

标签: javascript properties naming-conventions naming


【解决方案1】:

Douglas Crockford's 接题。

名字

名称应由 26 个大小写字母(A .. Z、a .. z)、10 位数字(0 .. 9)和 _(下划线)组成。避免使用国际字符,因为它们可能无法很好地阅读或在任何地方都无法理解。不要在名称中使用 $(美元符号)或 \(反斜杠)。

不要使用 _(下划线)作为名称的第一个字符。它有时用于表示隐私,但实际上并不提供隐私。如果隐私很重要,请使用提供私人成员的表格。避免表现出缺乏能力的惯例。

大多数变量和函数应该以小写字母开头。

必须与新前缀一起使用的构造函数应以大写字母开头。如果省略了必需的 new,JavaScript 既不会发出编译时警告,也不会发出运行时警告。如果不使用 new 可能会发生坏事,因此大写约定是我们唯一的防御措施。

全局变量应全部大写。 (JavaScript 没有宏或常量,因此使用全部大写来表示 JavaScript 没有的功能没有多大意义。)

W3C's 接题

用名字来称呼事物——简单、简短、易读的变量和函数名

这很简单,但令人恐惧的是,您在 JavaScript 中遇到 x1、fe2 或 xbqne 等变量的频率,或者在光谱的另一端 - 变量名称,如 incrementorForMainLoopWhichSpansFromTenToTwenty 或 createNewMemberIfAgeOverTwentyOneAndMoonIsFull。

这些都没有多大意义——好的变量和函数名称应该易于理解并告诉你发生了什么——不多也不少。要避免的一个陷阱是将名称中的值和功能结合起来。一个名为 isLegalDrinkingAge() 的函数比 isOverEighteen() 更有意义,因为法定饮酒年龄因国家而异,而且除了饮酒之外,还有其他受年龄限制的事情要考虑。

匈牙利符号是一个很好的变量命名方案(还有其他命名方案需要考虑),优点是您知道某物应该是什么,而不仅仅是它是什么。

例如,如果您有一个名为 familyName 的变量并且它应该是一个字符串,您可以将其写为“匈牙利语”中的 sFamilyName。一个名为 member 的对象是 oMember,一个名为 isLegal 的布尔值是 bIsLegal。这对某些人来说非常有用,但对其他人来说似乎是额外的开销——是否使用它真的取决于你。

保持英语也是一个好主意。编程语言是英文的,所以为什么不将此作为其余代码的逻辑步骤。我花了一些时间调试韩语和斯洛文尼亚语的代码,我可以向你保证,这对于非母语人士来说并不好玩。

将您的代码视为叙述。如果您可以逐行阅读并理解发生了什么,那就太好了。如果您需要使用画板来跟上逻辑流程,那么您的代码需要一些工作。如果您想与现实世界进行比较,请尝试阅读陀思妥耶夫斯基——我迷失在一个有 14 个俄罗斯名字的页面上,其中 4 个是化名。不要写那样的代码——它可能使它更像艺术而不是产品,但这很少是一件好事。

wikipedia's 接题

JavaScript

内置的 JavaScript 库使用与 Java 相同的命名约定。类使用大写字母(RegExp、TypeError、XMLHttpRequest、DOMObject),方法使用小写字母(getElementById、getElementsByTagNameNS、createCDATASection)。为了保持一致,大多数 JavaScript 开发人员都遵循这些约定。另见:Douglas Crockford 的约定

【讨论】:

    猜你喜欢
    • 2012-12-03
    • 2011-04-11
    • 2013-06-25
    • 2015-11-21
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    相关资源
    最近更新 更多