JavaScript 编码规范
一、命名规范
1.允许名称中包含字母,数字,下划线'_'和‘$’,区分大小写
2.变量(函数)的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,
避免使人产生误解
3.命名中若使用特殊约定或缩写,则要有注释说明
4.除了在xpcom组件中,尽量不要使用“_”作为变量(函数)名的第一个字符。它有时用来标识私
有变量(函数),但实际上javascript并没有提供私有变量的功能。如果私有变量很重要,可以使用私有成员的形式,应避免使用这种容易让人误解的命名习惯
5.用正确的反义词组命名具有互斥意义的变量或相反动作的函数等
注意:没有关系的变量不要使用***1,***2,***3,***4
没有测试意义的变量(函数)不要用test开头
二、声明
1.变量声明
1)所有变量必须在使用前定义,尽管javascrip并不强制要求这样做,但是这样做可以增加程序
的可读性,且容易发现那些没有声明的变量(它们会被编译成全局变量)
2)尽量减少全局变量的使用,不要让局部变量覆盖全局变量
3)在函数的开始应先用 var 关键字声明函数中要使用的局部变量,每个变量单独占一行,注释
变量的功能及代表的含义。
2.函数声明
1)所有函数也必须在调用前进行声明
2)内部函数应在 var 声明内部变量的语句之后声明,可以清晰地表明内部变量和内部函数的作
用域。
三、语句
1.一行最多有一个语句,语句后边要有“;”
注:如果一个赋值语句是用函数和对象来赋值,可能需要跨多行,一定切记要在赋值语句末加上分号。这是因为 JavaScript 中,所有表达式都可以当语句,遇换行符时会解析为表达式的结束,此时不规范的换行和分号的丢失,可能引入新的错误。
2.对于复合语句,if, for, while, do, switch, try … catch 等代码体,函数定义的函数体,对
象的定义等都需要放在花括号'{}'里面。
行中,以免换行符被误解析为语句的结束而引起返回错误。return 关键字后若没有返回表达式,则返回 undefined。构造器的默认返回值为 this。
4.if语句,应该是如下的格式:
if (condition){
codes;
}
if (condition){
codes;
} else {
codes;
}
if (conditon){
codes;
} else if (condition){
codes;
}
5.for语句
for语句应如下面的格式:
for (initialization; condition; update){
codes;
}
for (variable in object){
codes;
}
6.while语句
while (condition){
codes;
}
do{
codes;
} while(condition);
7.switch语句
switch(expresstion){
javascript说明case expression:
codes;
defaults:
codes;
}
注意:每个case(除了defaults)的codes,都必须已break,return或者throw结束。
<语句
try{
codes;
}catch (variable){
codes;
}
注意:catch中要有实际意义的输出,禁止不执行任何代码;
一般在调用xpcom组件的时候会用try语句
9.= = =和!= =
使用= = =和!= =会比= =和!=要好一些,因为= =和!=会强制类型转换。特别是不要= =用于与错值比较,例如false、null 、undefined、“”、 0 、NaN。
四、注释
1.一般情况下,有效注释量必须在20 %以上
注释的原则是有助于对程序的阅读和理解,注释不宜太多,但也不能太少,注释语言必须准确、易懂、简洁。
2.注释格式
单行://注释
多行:/*注释
注释
*/
3.文件头部应进行注释,列出:生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等
4.函数头部应进行注释,列出:函数的目的/ 功能、输入参数、输出参数、返回值等
5.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要
删除
6.注释的内容要清楚、明了,含义准确,防止注释二义性
7.避免在注释中使用缩写,特别是非常用缩写
8.对于所有的变量、常量都要写注释,说明其含义
9.分支语句(条件分支、循环语句等)必须编写注释
五、函数
1.明确函数功能,精确(而不是近似)地实现函数设计
2.一个函数仅完成一件功能
3.不要设计多用途、面面俱到的函数
4.函数的功能应该是可以预测的
5.对所调用函数的错误返回码要仔细、全面地处理
6.避免函数中不必要语句,防止程序中的垃圾代码
7.如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题
8.减少函数本身或函数间的递归调用
9.仔细分析模块的功能及性能需求,并进一步细分,同时若有必要画出有关数据流图,据此来进行
模块的函数划分与组织
六、程序效率
1.编程时要经常注意代码的效率
说明:代码效率分为全局效率、局部效率、时间效率及空间效率。全局效率是站在整个系统的角度上的系统效率;局部效率是站在模块或函数角度上的效率;时间效率是程序处理输入任务所需的时间长短;空间效率是程序所需内存空间。
2.在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率
说明:不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影响。
3.局部效率应为全局效率服务,不能因为提高局部效率而对全局效率造成影响
4.通过对程序算法的优化来提高空间效率
5.循环体内工作量最小化
说明:应仔细考虑循环体内的语句是否可以放在循环体之外,使循环体内工作量最小,从而提高程序的时间效率
6.在保证程序质量的前提下,通过压缩代码量、去掉不必要代码以及减少不必要的局部和全局变量,
来提高空间效率
7.在多重循环中,应将最忙的循环放在最内层
8.尽量减少循环嵌套层次
9.尽量减少全局变量的使用
10.避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中
说明:目的是减少判断次数。循环体中的判断语句是否可以移到循环体外,要视程序的具体情况而言,一般情况,与循环变量无关的判断语句可以移到循环体外,而有关的则不可以。
七、测试
1.测试的代码要放到单独的目录里,不管是xul还是javascript
2.每个组件接口都要有相应的测试程序
八、内存
1.避免循环引用
三个对象 A 、B 、C
A的某一属性引用着B,同样C也被B的属性引用着。如果将A清除,那么B、C也被释放。
如果增加了C的某一属性引用B对象,如果这是清除A,那么B、C不会被释放,因为B和C之间产生了循环引用
2.慎用闭包
function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();
这段代码有两个特点:
●函数b嵌套在函数a内部;
●函数a返回函数b。
简单说当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。
可以看出由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不要滥用闭包
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论