javascript编码规范

一些命名规范书或js书命名规范章节,喜欢将命名规范跟语法混在一块例如:

1.使用“var”定义、初始化变量防止产生全局变量,多变量一块定义使用“,”(本身这种方式就很有争议)。

2.结尾必加“;”防止js执行效果跟想象中不一样。

3.判断两数相等使用“===”不要使用“==”。(实际上==会出问题情况很少发生,而js的语法章节也会提及建议使用“===”)

 

等等导致规范过于冗长,在我看来,命名规范不应太多,而是将实地编码中最常用到的列出即可。

 

研究过一些框架低层代码、看完《编写可维护的代码》整理出觉得适合自己的js编码规范:

1.命名。

文字表述太繁琐,直接以下例子说明:

常量     AGE   MY_AGE

一般变量 age   my_name  my_firstName

私有属性 _age  _my_name _my_firstName

函数     init()  changeName() changMyName()

私有方法 _init() _changeName() _changeMyName()

类       Sprite  JumpSprite

 

2.方法、函数建议用动词:

Sprite.getTag();

Sprite.isLoad();


3.间隔、缩进。

间隔:操作符之间都是用空格间隔(除了特殊的负号“-”及自加自减)。

for (i = 0, len = items.length; i < len; i++){   

    doSomething(items[i]);

}

缩进:虽然有些文章认为2格的空格缩进便于阅读跟代码转移,但实际上2行缩进在大部分IDE上很难操作

因为主流IDE的默认缩进都是4格,关于使用"Tab"导致的问题,使用IDE、web或本地格式化软件的

“格式化代码”即可解决。

 

4.行宽:

一行代码超过80行,不同的IDE有不同的提示:如editplus右下角有当前行数、列数提示

webStorm直接就有一条明显的线划分提示。

 

5.数组、对象定义:

定义数组不用new Array(),而是用"[]",定义对象不用new Object,而是用"{}"。

 

 

题外话:

js中变量与属性是不同的存在,例如属性可以使用“delete”删除之,而"var"定义的变量不能。

同样的方法与函数也是不同的,一个类的方法可以外部访问而一个类里的函数则不能。

var TestClass = function() {

    //外部可访问
    this.getName = function() {}
    //外部不可访问
    function getAge() {}

};

var WteamClass = new TestClass();

var name = WteamClass.getName; //正常
var age = WteamClass.getAge(); //报错

 

 

附上某一500强公司的js规范:

 

1、禁止使用for-in语句枚举数组。(因为for in遍历,会遍历出多余的内容,如扩展的方法)。

 

2、禁止使用with语句。(容易出错、有安全隐患,且都有代替的代码实现)。

 

3、业务代码禁止使用eval。(同上,主要是防止XSS攻击)

禁止使用Function 构造器,它是另外一种形式的eval。

禁止给setTimeout 或者setInterval 传递字符串类型参数,否则这两个方法的行为就类似于eval。

 

4、禁止使用new Object(),必须用{}替代。(在Javascript里分配大量的new变量地址是一项很慢的操作,为了效率起见,你应该始终使用对象符号。)

 

5、禁止使用new Array(),必须用[]替代。(同上)

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。