JavaScript 代码规范

版本 日期 描述 作者
v0.1 2019年5月8日 JavaScript 代码规范 BroInBro
v0.2 2019年6月11日 适应性修改 Hairi

代码风格

缩进

  • 统一使用2空格缩进

分号

  • 所有语句必须以分号结尾

行宽

  • 每行代码尽量不超过80个字符,最长不得超过120个字符

换行

  • 在优先级更高处进行换行

    // Prefer
    currentEstimate =
        calc(currentEstimate + x * currentEstimate) /
            2.0f;
    
    // Discourage
    currentEstimate = calc(currentEstimate + x *
      currentEstimate) / 2.0f;
    
  • 左大括号不换行

    // Prefer
    function func() {
        // code
    }
    
    // Discourage
    function func()
    {
        // code
    }
    

空格

  • 双目运算符左右各空一格 [=, -, +=, ==, >, in, is not, and]

    // Prefer
    i = i + 1;
    x += 1;
    y = y * 2 - 1;
    
    // Discourage
    i=i+1;
    x+=1;
    y = y*2 - 1;
    
  • 函数参数列表中,逗号后有空格

    // Prefer
    function func(x, y) {
        // code
    }
    
    // Discourage
    function func(x,y) {
        // code
    }
    
  • 不要使用空格进行水平对齐

    // Prefer
    x = 1;
    temp = x + 1;
    longVariable = 1234;
    {
      tiny: 42,
      longer: 123
    }
    
    // Discourage
    x            = 1;
    temp         = x + 1;
    longVariable = 1234;
    {
      tiny:   42,
      longer: 123
    }
    

引号

  • 统一使用单引号

    如果字符串内包含单引号,使用模板字符串

    // Prefer
    let message = `This is a 'message'.`;
    
    // Discourage
    let message = "This is a 'message'.";
    

注释

块注释

首尾 /* */ 单行隔开,使注释更加醒目

/*
* block comment
* block comment
*/

行注释

至少使用2个空格和语句隔开且 // 后空一格。禁止无意义注释

// Prefer
x = x + 1;  // 加粗一个像素

// Discourage(无意义)
x = x + 1;  // x加一

函数注释

对函数参数、返回值等的说明如下所示

  /**
   * Demonstrates function's function. This one
   * returns input.
   * @param {TYPE} arg Description for arg
   * @return {TYPE} Description for return value
   */
  function func(arg) {
      return arg;
  }

命名规范

  • 变量使用名词,函数使用动词 + 名词,命名语义化
  • 常量使用下划线分隔的大写命名
  • 其余情况采用下划线命名法
const MAX_SIZE = 10;

function func(var_one, var_two) {
    let cur_size = var_one + var_two;
    return cur_size;
}

语言特性

  • 使用 constlet
  • 变量声明独行出现

    // Prefer
    let x = 1;
    let y = 2;
    
    // Discourage
    let x = 1, y = 2;
    
  • 多使用箭头函数,避免 this 问题
  • 多使用模板字符串,减少字符串操作

results matching ""

    No results matching ""