admin 管理员组

文章数量: 887021


2024年1月5日发(作者:排序算法大全简单)

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 等代码体,函数定义的函数体,对象的定义等都需要放在花括号'{}'里面。

3. return语句在使用时也需慎重,如果用表达式的执行作为返回值,请把表达式和 return 放在同一行中,以免换行符被误解析为语句的结束而引起返回错误。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){

case expression:

codes;

defaults:

codes;

}

注意:每个case(除了defaults)的codes,都必须已break,return或者throw结束。

8. try语句

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外的一个变量引用的时候,就创建了一个闭包。

可以看出由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不要滥用闭包


本文标签: 函数 效率 语句