js 书写规范

来源:互联网 发布:淘宝有宠物狗买吗 编辑:程序博客网 时间:2024/05/11 17:05

        在开发稍微大一点的项目时,每次都会纠结应该采用怎么样的书写风格,变量命名是采用camel 风格呢,还是下划线?变量、函数、类的命名规格一样吗? 所以,这里,我想记录一下js的开发规范,避免自己纠结,也为以后能在推广风格的时候,做下积累。

1 缩进

    采用4空格的方式,避免用tab

2 行的长度

   避免大于100个字符的行

   当一个expression 在一行中写不下时,他需要使用换行。在运算符后面换行

   如果字符串太长,将它折成多行

  下一行将比上一行多一个缩进

3  注释

     多写注释,有助于代码读者理解代码

    注释一定要有含义,重点放在不能明显看出来功能的地方,别要用没有意义的注释浪费读者的时间

4 变量声明

   所有变量在使用时,一定要先声明

   所有在函数中药用到的变量,在函数头部声明

   不要书写隐示的全局变量,全局变量用应该如下方式书写:window.varname;

5 函数声明

    使用函数前,一定要先声明定义函数,函数内的函数,应该用 var *** 来声明

    在函数名和( 之间不能有空格,在)和{ 之间,应该有一个空格。

   

function outer(c, d) {        var e = c * d;        function inner(a, b) {            return (e * a) + b;        }        return inner(0, 1);}

    对于匿名函数,在function 关键字和(字符间,应该有一个空格

   

div.onclick = function (e) {   
   return false;   
 };
    当函数要立即执行时,整个函数应该放在()中。这样可以非常明显的告诉读者参数的返回值是函数的返回值,而非函数本身

var collection = (function () {    var keys = [], values = [];    return {        get: function (key) {            var at = keys.indexOf(key);            if (at >= 0) {                return values[at];            }        },        set: function (key, value) {            var at = keys.indexOf(key);            if (at < 0) {                at = keys.length;            }            keys[at] = key;            values[at] = value;        },        remove: function (key) {            var at = keys.indexOf(key);            if (at >= 0) {                keys.splice(at, 1);                values.splice(at, 1);            }        }    };}());


6 命名
   构成名字的字符有(A..Z,a .. z) ,10个数据(0..9)和下划线_。

   不用用_作为第一个字符。某些场合下,_开头表示私用,但是实际上他不具有私有能力,所以不建议使用

   大多数变量和函数应该以小写字母开头

var encodeHtml;

   构造函数应该以大写字母开头

var animation = new __.Anim();
   全局变量应该使用全大写字母的方式

Var GLOBAL = null;


7 声明

  1行最多一个声明

   在每一个声明后面加一个;好

8 多行声明

   多行声明是指用{}包围的声明

   { 应该在多行声明的开头

   }应该重启一行,并对齐

   即使是1行的多行声明,也应该用{}

9 各种关键字的声明形式

if 声明,应该采用下面的方式

if (condition) {        statements    }        if (condition) {        statements    } else {        statements    }        if (condition) {        statements    } else if (condition) {        statements    } else {        statements    }
for 

for (initialization; condition; update) {        statements    }for (variable in object) {    if (filter) {        statements    } }

 while 声明

while (condition) {        statements}


do Statement
do {        statements} while (condition);


switch 

    switch (expression) {    case expression:        statements    default:        statements    }
Each case is aligned with the switch. This avoids over-indentation.

Each group of statements (except the default) should end with breakreturn, or throw. Do not fall through.

try 

try {        statements    } catch (variable) {        statements    }    try {        statements    } catch (variable) {        statements   } finally {        statements    }

11 空白

    空白行将不同逻辑区域分开,提高了代码的可读性

    空白字符应该在下面的场景中使用:

        关键字和紧跟着他的(之间,应该用一个空白

              while (true) {
        空白字符不应该在函数名和紧跟着它的(之间。这样有助于区分关键字和函数

        所有的操作符应该同操作数之间用一个空格(除.([外)

        在for 声明中 ,每一个;分号后面应该紧跟一个空格

        在每一个逗号后面,应该紧跟一个空格


12 尽量使用=== 和!== ,而不是== ,!=


13 避免中条件语句中进行赋值操作

if(a=b){

你的意图是将b 的值赋给a,还是

if(a===b){

如果是赋值,一定要写注释。不过,不建议这样使用


参考:

http://javascript.crockford.com/code.html

http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml