• 关于缩进
  • 关于空格
  • 关于命名
  • 关于双等号
  • 关于双引号
  • 关于大括号位置
  • 关于字面表达式的问题
  • Object和Array创建时的逗号问题
  • 避免使用with与eval
  • 关于for-in循环
  • 关于Array数组的问题
  • 关于变量声明
  • 注释规范

    好的编码规范是攻城师们要遵循的法则,Bmob云函数希望大家能够养成良好的编码规范。Nodejs的编码规范与其他语言稍微有所不同,这里列举有所区别的地方。

    关于缩进

    缩进,2个space,tab要转为2 space。这是Nodejs源码和module采用的标准,希望大家入乡随俗。

    关于空格

    function关键词和函数名之间有一个空格;调用函数时,函数名和左括号之间没有空格。

    1. // 正确
    2. function foo(bar) {...}
    3. foo(bar);
    4. foo(function callback(err, data) {...});
    5. foo(function (err, data) {...});
    6. // 错误
    7. function foo (bar) {...}
    8. foo (bar);
    9. foo(function callback (err, data) {...});
    10. foo(function(err, data) {...});

    所有其他语法元素与左括号之间,都有一个空格。

    1. // 正确
    2. return (a + b);
    3. if (a === 0) {...}
    4. for (var k in map) {...}
    5. while (i > 0) {...}
    6. // 错误
    7. return(a + b);
    8. if(a === 0) {...}
    9. for(var k in map) {...}
    10. while(i > 0) {...}

    操作符号与参数之间有一个空格;能提高阅读性的空格不能省略。

    1. // 正确
    2. var a = 1 + 2;
    3. for (var i = 0, l = items.length; i < l; i++) {...}
    4. //错误
    5. var a=1+2;
    6. for(var i=0,l=items.length;i<l;i++){...}

    关于命名

    好的变量与函数命名,可以避免大量的注释。Nodejs推荐使用驼峰式命名:

    1. 函数和变量:functionNamesLikeThis, variableNamesLikeThis
    2. 类名和枚举类型:ClassNamesLikeThis, EnumNamesLikeThis
    3. 类方法:methodNamesLikeThis
    4. 常量:SYMBOLIC_CONSTANTS_LIKE_THIS

    关于双等号

    开发的时候大家请慎重使用==号,有时候结果未必会是您想的那样,请看下面的调试计算结果:

    1. > 0 == ''
    2. true
    3. > 1 == true
    4. true
    5. > 2 == true
    6. false
    7. > 0 == '0'
    8. true
    9. > false == 'false'
    10. false
    11. > false == '0'
    12. true
    13. > " \t\r\n " == 0
    14. true

    关于双引号

    使用string时,用单引号替代双引号(写JSON时除外)。

    1. //正确
    2. var foo = 'bar';
    3. //错误
    4. var foo = "bar";

    关于大括号位置

    1. //正确
    2. if (true) {
    3. response.end('winning');
    4. }
    5. //错误
    6. if (true)
    7. {
    8. response.end ('losing');
    9. }

    关于字面表达式的问题

    使用字面表达式,用 ‘{}’ ,’[]’ 代替 new Array ,new Object,不要使用 string,bool,number 的对象类型,即不要调用 new String ,new Boolean ,new Number。

    Object和Array创建时的逗号问题

    Object ,Array 创建,当有多个元素时,注意分行排列时逗号的位置。

    1. //正确
    2. var a = ['hello', 'world'];
    3. var b = {
    4. good: 'code',
    5. 'is generally': 'pretty',
    6. };
    7. //错误
    8. var a = [
    9. 'hello', 'world'
    10. ];
    11. var b = {"good": 'code'
    12. , is generally: 'pretty'
    13. };

    避免使用with与eval

    关于for-in循环

    for-in 循环,仅在 object/hash/map 时使用,绝不要对Array 使用。

    关于Array数组的问题

    不要把Array 当做关联数组或Object 使用,即你不应该用非数字作为Array 的索引(有PHP开发经验的朋友尤其注意这点)。

    1. //正确
    2. var a = {};
    3. a.hello = 'shit';
    4. a.foo = 'bar';
    5. //错误
    6. var a = []; // use '{}' instead
    7. a['hello'] = 'shit';
    8. a['foo'] = 'bar';

    关于变量声明

    变量声明时,应该每行声明一个,不应该都写在一行。

    1. //正确
    2. var name = 'bmob';
    3. var website = 'www.bmob.cn';
    4. //错误
    5. var name = 'bmob'
    6. ,website = 'www.bmob.cn';

    注释规范

    注释的规范如下所示:

    1. /**
    2. * 获取文章列表
    3. * @param {number} num 文章数量.
    4. * @param {string|date|null} dateTime 发布时间.
    5. */
    6. var getPosts = function (num, dateTime) {
    7. // ...
    8. };