我来自.NET背景,微软似乎喜欢以大写字母开头的方法和属性。例如PrintMessage();
JavaScript似乎遵循Java的命名规则,因为函数名称应以小写字母开头。例如printMessage();
JavaScript(ECMAScript版本5)现在支持访问者属性,类似于.NET中的属性。 .NET再次喜欢以大写字母开头的属性。例如Message
所以我的问题是,JavaScript应该为属性使用哪种命名约定?
e.g。 Message
或message
?
我已经查看了一些风格指南,但我对属性的主题看不太多。
答案 0 :(得分: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。它对某些人来说非常有用,但对其他人来说似乎是额外的开销 - 无论你是否使用它都取决于你。
保持英语也是一个好主意。编程语言是英文的,所以为什么不把它作为其余代码的逻辑步骤。我花了一些时间调试韩语和斯洛文尼亚语代码,我可以向你保证,对于非母语人士而言,这并不是一件好事。
将您的代码视为叙述。如果你能逐行阅读并了解正在发生的事情,那就做得好。如果您需要使用草图板来跟上逻辑流程,那么您的代码需要一些工作。如果你想要与现实世界进行比较,请尝试阅读Dostojewski - 我迷失在一个有14个俄罗斯名字的页面上,其中4个是假名。不要写那样的代码 - 它可能使它更像艺术而不是产品,但这很少是一件好事。
wikipedia's接受主题
的JavaScript
内置JavaScript库使用与Java相同的命名约定。类使用上层camel case(RegExp,TypeError,XMLHttpRequest,DOMObject)和方法使用较低的camel case(getElementById,getElementsByTagNameNS,createCDATASection)。为了保持一致,大多数JavaScript开发人员都遵循这些约定。另见:Douglas Crockford的惯例