Dojo Javascript 编程规范 规范自己的JavaScript书写
前言
良好的JavaScript书写习惯的优点不言而喻,今天彬Go向大家推荐DojoJavascript编程规范,相当不错的Javascript编程风格规范,建议大家可以借鉴一下此规范编写Javascript。感谢i.feelinglucky的翻译。
序
Anyviolationtothisguideisallowedifitenhancesreadability.
所有的代码都要变成可供他人容易阅读的。
快读参考
核心API请使用下面的风格:
结构
规则
注释
模块
小写
不要使用多重语义(Nevermultiplewords)
类
骆驼
公有方法
混合
其他的外部调用也可以使用lower_case(),这样的风格
公有变量
混合
常量
骆驼或大写
结构
规则
私有方法
混合,例子:
私有变量
混合,例子:
方法(method)参数
混合,例子:
本地(local)变量
混合,例子:
命名规范
1.变量名称必须为小写字母。
2.类的命名使用骆驼命名规则,例如:
Account,EventHandler
3.常量必须在对象(类)或者枚举变量的前部声明。枚举变量的命名必须要有实际的意义,并且其成员必须使用骆驼命名规则或使用大写:
varNodeTypes={ Element:1, DOCUMENT:2 }
4.简写单词不能使用大写名称作为变量名:
getInnerHtml(),getXml(),XmlDocument
5.方法的命令必须为动词或者是动词短语:
obj.getSomeValue()
6.公有类的命名必须使用混合名称(mixedCase)命名。
7.CSS变量的命名必须使用其对应的相同的公共类变量。
8.私有类的变量属性成员必须使用混合名称(mixedCase)命名,并前面下下划线(_)。例如:
varMyClass=function(){ var_buffer; this.doSomething=function(){ }; }
9.变量如果设置为私有,则前面必须添加下划线。
this._somePrivateVariable=statement;
10.通用的变量必须使用与其名字一致的类型名称:
setTopic(topic)//变量topic为Topic类型的变量
11.所有的变量名必须使用英文名称。
12.变量如有较广的作用域(largescope),必须使用全局变量;此时可以设计成一个类的成员。相对的如作用域较小或为私有变量则使用简洁的单词命名。
13.如果变量有其隐含的返回值,则避免使用其相似的方法:
getHandler();//避免使用getEventHandler()
14.公有变量必须清楚的表达其自身的属性,避免字义含糊不清,例如:
MouseEventHandler
,而非MseEvtHdlr。
请再次注意这条规定,这样做得的好处是非常明显的。它能明确的表达表达式所定义的含义。例如:
dojo.events.mouse.Handler//而非dojo.events.mouse.MouseEventHandler
15.类/构造函数可以使用扩展其基类的名称命名,这样可以正确、迅速的找到其基类的名称:
EventHandler
UIEventHandler
MouseEventHandler
基类可以在明确描述其属性的前提下,缩减其命名:
MouseEventHandlerasopposedtoMouseUIEventHandler.
特殊命名规范
术语“get/set”不要和一个字段相连,除非它被定义为私有变量。
前面加“is”的变量名应该为布尔值,同理可以为“has”,“can”或者“should”。
术语“compute”作为变量名应为已经计算完成的变量。
术语“find”作为变量名应为已经查找完成的变量。
术语“initialize”或者“init”作为变量名应为已经实例化(初始化)完成的类或者其他类型的变量。
UI(用户界面)控制变量应在名称后加控制类型,例如:leftComboBox,TopScrollPane。
复数必须有其公共的名称约定(原文:PluralformMUSTbeusedtonamecollections)。
带有“num”或者“count”开头的变量名约定为数字(对象)。
重复变量建议使用“i”,“j”,“k”(依次类推)等名称的变量。
补充用语必须使用补充词,例如:get/set,add/remove,create/destroy,start/stop,insert/delete,begin/end,etc.
能缩写的名称尽量使用缩写。
避免产生歧义的布尔变量名称,例如:
isNotError,isNotFound为非法
错误类建议在变量名称后加上“Exception”或者“Error”。
方法如果返回一个类,则应该在名称上说明返回什么;如果是一个过程,则应该说明做了什么。
文件
缩进请使用4个空白符的制表位。
如果您的编辑器支持文件标签_(filetags),请加添如下的一行使我们的代码更容易阅读:
//vim:ts=4:noet:tw=0:
译注:老外用VIM编辑器比较多,此条可以选择遵循。
代码折叠必须看起来是完成并且是合乎逻辑的:
varsomeExpression=Expression1 +Expression2 +Expression3;
varo=someObject.get( Expression1, Expression2, Expression3 );