js编码规范

# 1 前言

JavaScript在百度一直有着广泛的应用,特别是在浏览器端的行为管理。本文档的目标是使JavaScript代码风格保持一致,容易被理解和被维护。

虽然本文档是针对JavaScript设计的,但是在使用各种JavaScript的预编译语言时(如TypeScript等)时,适用的部分也应尽量遵循本文档的约定。

2 代码风格

1. 结构

  • [强制] 使用 4 个空格做为一个缩进层级,不允许使用 2 个空格 或 tab 字符。
  • [强制] switch 下的 case 和 default 必须增加一个缩进层级。

2. 空格

  • [强制] 二元运算符两侧必须有一个空格,一元运算符与操作对象之间不允许有空格。
    示例:
    var a = !arr.length;
    a++;
    a = b + c;

[强制] 用作代码块起始的左花括号 { 前必须有一个空格。
示例:

    // good
    if (condition) {
    }
    
    while (condition) {
    }
    
    function funcName() {
    }
    
    // bad
    if (condition){
    }
    
    while (condition){
    }
    
    function funcName(){
    }

[强制] if / else / for / while / function / switch / do / try / catch / finally 关键字后,必须有一个空格。
示例:

    // good
    if (condition) {
    }
    
    while (condition) {
    }
    
    (function () {
    })();
    
    // bad
    if(condition) {
    }
    
    while(condition) {
    }
    
    (function() {
    })();

[强制] 在对象创建时,属性中的 : 之后必须有空格,: 之前不允许有空格。
示例:

    // good
    var obj = {
        a: 1,
        b: 2,
        c: 3
    };
    
    // bad
    var obj = {
        a : 1,
        b:2,
        c :3
    };

[强制] 函数声明、具名函数表达式、函数调用中,函数名和 ( 之间不允许有空格。

    // good
    function funcName() {
    }
    
    var funcName = function funcName() {
    };
    
    funcName();
    
    // bad
    function funcName () {
    }
    
    var funcName = function funcName () {
    };
    
    funcName ();

[强制] , 和 ; 前不允许有空格

    // good
    callFunc(a, b);
    
    // bad
    callFunc(a , b) ;

[强制] 在函数调用、函数声明、括号表达式、属性访问、if / for / while / switch / catch 等语句中,() 和 [] 内紧贴括号部分不允许有空格。

    // good

    callFunc(param1, param2, param3);
    
    save(this.list[this.indexes[i]]);
    
    needIncream && (variable += increament);
    
    if (num > list.length) {
    }
    
    while (len--) {
    }
    
    
    // bad
    
    callFunc( param1, param2, param3 );
    
    save( this.list[ this.indexes[ i ] ] );
    
    needIncreament && ( variable += increament );
    
    if ( num > list.length ) {
    }
    
    while ( len-- ) {
    }

[强制] 单行声明的数组与对象,如果包含元素,{} 和 [] 内紧贴括号部分不允许包含空格。

声明包含元素的数组与对象,只有当内部元素的形式较为简单时,才允许写在一行。元素复杂的情况,还是应该换行书写。

示例:

    // good
    var arr1 = [];
    var arr2 = [1, 2, 3];
    var obj1 = {};
    var obj2 = {name: 'obj'};
    var obj3 = {
        name: 'obj',
        age: 20,
        sex: 1
    };
    
    // bad
    var arr1 = [ ];
    var arr2 = [ 1, 2, 3 ];
    var obj1 = { };
    var obj2 = { name: 'obj' };
    var obj3 = {name: 'obj', age: 20, sex: 1};

[强制] 行尾不得有多余的空格。

3. 换行

[强制] 每个独立语句结束后必须换行。

[强制] 每行不得超过 120 个字符。

[强制] 超长的不可分割的代码允许例外,比如复杂的正则表达式。长字符串不在例外之列。

示例:

    // good
    if (user.isAuthenticated()
        && user.isInRole('admin')
        && user.hasAuthority('add-admin')
        || user.hasAuthority('delete-admin')
    ) {
        // Code
    }
    
    var result = number1 + number2 + number3
        + number4 + number5;
    
    
    // bad
    if (user.isAuthenticated() &&
        user.isInRole('admin') &&
        user.hasAuthority('add-admin') ||
        user.hasAuthority('delete-admin')) {
        // Code
    }
    
    var result = number1 + number2 + number3 +
        number4 + number5;

[强制] 在函数声明、函数表达式、函数调用、对象创建、数组创建、for语句等场景中,不允许在 , 或 ; 前换行。

示例:

    // good
    var obj = {
        a: 1,
        b: 2,
        c: 3
    };
    
    foo(
        aVeryVeryLongArgument,
        anotherVeryLongArgument,
        callback
    );
    
    
    // bad
    var obj = {
        a: 1
        , b: 2
        , c: 3
    };
    
    foo(
        aVeryVeryLongArgument
        , anotherVeryLongArgument
        , callback
    );

猜你喜欢

转载自www.cnblogs.com/Hsong/p/9011234.html