1、JavaScript 编码规范1.说明本规范适用于汉捷机械部件(常州)有限公司信息技术部,为公司的系统开发提供标准及约定,有助于软件开发人员快速掌握 JS 的编码规则,能够快速的融入到团队开发中,使用团队开发的效率大大提高。2.命名规范3.1 基础命名规范1. 所有变量必须是有意义的英文,禁止使用拼音,如错误的写法:paifuwu();fucusTa(); 2. 变量允许使用公认英文缩写,如:showMsg();getXML();3. 类命名必须是驼峰式,如:var foo = new MyClass(); 4. 常量必须所有单词大写,并且每个单词间加下划线,如:var BITMAP_FLAG
2、 = 777; 5. 枚举类型时,枚举的命名必须有意义,枚举和枚举成员必须以驼峰式或大写:var NodeTypes = Element : 1,DOCUMENT: 26. 常量和枚举必须在最前端定义,脚本合并时注意,必须把常量与枚举定义的文件放在文件列表的第一位7. 变量内的简写单词不能全大写,如:XmlDocument strHtml8. 函数开头必须是有意义的动词或动词短语,如:getSize()setSize()isTrue()9. 私有类的变量属性成员必须使用混合式命名,并前面下下划线,如:_foo_height_getSize() 10. 临时的全局变量放到一个全局的哈希表里,方便
3、变量回收11. 大括号前面不能有换行符:/正确的写法:if (true) /错误的写法:if (true)3.2 高级命名规范1. 前面加 “is” 的变量名应该为布尔值,亦可使用 “can” “has” “should”2. 前面加 ”str” 的变量名应该为字符串3. 前面加 “arr” 的变量名应该为数组4. 前面加 “num” 或 “count” 的变量名应该为数字5. “o” 作为局部变量或参数,表示为 Object6. “ e” 作为局部变量或参数,表示为 Event7. “el” 作为局部变量或参数,表示为 Element8. 能缩写的单词尽量缩写9. 避免产生令人误解的布尔值:
4、isNotNumber isNan10. 处理错误的变量,必须在后面跟着 “Error”11. 尽量做有意义的代码折行,不要让一行代码过长。 (HTML 字符串除外)12. 逗号( , ) 建议使用空格隔开。13. 操作符建议使用空格隔开(包括三元操作符) 。var i = k , QZFL Team* version * updateDate */b) example命名空间方法集的方法必须加上接口使用方法的案例,例如/* 根据 ID 获取 dom 对象*example* var _div1 = QZFL.dom.getById(“div1“);*/QZFL.dom.getById = fu
5、nction() /code here类必须在构造函数定义函数上添加完整的example,代码范例需要加上常用接口使用案例。c) constructor构造函数必须在注释中申明其类型d) returns returnType returnDescription如果函数有返回值,必须注明其返回的类型和描述/* returns Array 返回物品列表*/function getItems()var _items = ;/code herereturn _items;e) namespace 方法集对象均作为命名空间对象,例如/* namespace QZFL 方法核心库之一,负责对浏览器 DOM
6、 操作提供基础的支持*/QZFL.dom = f) deprecated即将回收的接口,不建议使用接口必须声明 deprecatedg) private私有接口必须声明,避免私有接口出现在文档中h) requires有其他库依赖的接口和组件必须声明所依赖的接口名称/* requires QZFL.dialog*/QZFL.widget.confirm = i) type 所有变量名必须需要使用 type 来声明变量的类型/* 对象 id 号* type number*/this. id = id;j) event事件接口必须使用 event 来声明其作用/* 当动画停止后* event*/this.onMotionStop = QZFL.emptyFn;k) default 带默认参数的变量,需要声明起默认值,例如/* default “Undefined“*/this.title = title | “Undefined“;l) ignore当变量或函数不希望在输出文档被获知到,可以使用 ignore 忽略/* ignore*/this.title = title | “Undefined“