JavaScript代码规范

Posted by Nutlee on 2016-04-29

 

注释原则

  • As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性、可读性。
  • As long as necessary(如有必要,尽量详尽):合理的注释、空行排版等,可以让代码更易阅读、更具美感。
  • 函数方法注释

    1
    2
    3
    4
    5
    6
    7
    8
    9
    /**
    * 函数描述
    *
    * @param {string} p1 参数1的说明
    * @param {string} p2 参数2的说明,比较长
    * 那就换行了.
    * @param {number=} p3 参数3的说明(可选)
    * @return {Object} 返回值描述
    */
  • 文件注释

    1
    2
    3
    4
    5
    6
    /**
    * @fileoverview Description of file, its uses and information
    * about its dependencies.
    * @author user@meizu.com (Firstname Lastname)
    * Copyright 2009 Meizu Inc. All Rights Reserved.
    */

命名

  • 变量,使用 Camel 命名法。 var loadingModules = { } ;
  • 私有属性、变量和方法以下划线 _ 开头。
  • 常量,使用全部字母大写,单词间下划线分隔的命名方式。
  • 函数、函数的方法,使用 Camel 命名法。
  • 类、类的方法/属性,使用 Pascal 命名法。
  • 枚举变量,使用 Pascal 命名法。枚举的属性,使用全部字母大写,单词间下划线分隔的命名方式。
  • 由多个单词组成的缩写词,在命名中,根据当前命名法和出现的位置,所有字母的大小写与首字母的大小写保持一致。
  • 命名语法: 类名使用名词,函数名使用动宾短语,boolean 类型的变量使用 is 或 has 开头 ,Promise 对象用动宾短语的进行时表达。

不要在 Array 上使用 for-in 循环。

二元和三元操作符

  • 操作符始终写在前一行,以免分号的隐式插入产生预想不到的问题。
  • 三元操作符用于替代 if 条件判断语句。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Not recommended
    if (val != 0) {
    return foo();
    } else {
    return bar();
    }
    // Recommended
    return val ? foo() : bar();

&& 和 ||

  • 二元布尔操作符是可短路的, 只有在必要时才会计算到最后一项。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    // Not recommended
    function foo(opt_win) {
    var win;
    if (opt_win) {
    win = opt_win;
    } else {
    win = window;
    }
    // ...................
    }
    if (node) {
    if (node.kids) {
    if (node.kids[index]) {
    foo(node.kids[index]);
    }
    }
    }
    // Recommendedfunction
    foo(opt_win) {
    var win = opt_win || window;
    // ...................
    }
    var kid = node && node.kids && node.kids[index];
    if (kid) {
    foo(kid);
    }

参考资料:
前端开发规范手册JavaScript