JS代码规范

  1. 2空格缩进

    使用 2 个空格而不是 tab 来进行代码缩进,同时绝对不要混用空格和 tab 。

    Sublime Text 2 设置(perfernces > Settings - User):
    
    "tab_size": 2,
    
    "translate_tabs_to_spaces": true
  2. 换行

    使用 UNIX 风格的换行符 (\n),同时在每个文件的结尾添加一个换行符。 Windows 风格的换行符 (\r\n) 是绝对禁止出现在任何项目中的。 Sublime Text 2 设置(perfernces > Settings - User): "default_line_ending": "unix"

  3. 去除行末尾的多余空格

    就像吃完饭要刷牙一样,在提交 (commit) 代码之前你需要清理掉所有的不必要的空格。

    Sublime Text2 设置(perfernces > Settings - User):
    
    "trim_trailing_white_space_on_save": true
  4. 使用分号

    是否使用分号,在社区争论已久。 isaac 也写过一篇讨论的文章 但是,当可以用廉价的语法来消除一些可能引入的错误的时候,请当一个保守派。

  5. 每行 80 个字符

    限制你每行代码不超过 80 个字符。尽管现在的显示器越来越大,但是你的大脑并没有变大,并且你还可以把你的大显示器切分成多屏来显示。

    Sublime Text 2 设置(perfernces > Settings - User):
    
    "rulers": [80]
    
    多屏:view > Layout > Columns 2
  6. 使用单引号

    除非编写.json 文件,其他时候都请用单引号包裹字符串。

    Right:
    
    var foo = 'bar';
    
    Wrong:
    
    var foo = "bar";
  7. 大括号位置

    请把你的所有的左大括号都放在语句开始的这一行。

    Right:
    
    if (true) {
    
    console.log('winning');
    
    }
    
    Wrong:
    
    if (true)
    
    {
    
    console.log('losing');
    
    }

    同时,请注意在条件判断前后都添加一个空格。

  8. 变量、属性和函数名都采用小驼峰

    变量、属性和函数的命名风格都需要遵循小驼峰风格。 同时所有的命名都是有意义的。 尽量避免用单字符变量和少见单词来命名。

    Right:
    
    var adminUser = db.query('SELECT * FROM users ...');
    
    Wrong:
    
    var admin_user = db.query('SELECT * FROM users ...'); var a = db.query('SELECT * FROM users ...');
  9. 类名采用大驼峰

    类名都采用大驼峰风格来命名。

    Right:
    
    function BankAccount() {
    
    }
    
    Wrong:
    
    function bank_Account() {
    
    }
  10. 用大写来标识常量

    常量变量和对象的静态常量属性都需要特殊表明,通过全部大写的方式来表明。

    尽管 Node.js / V8 支持 mozilla 的 const 关键字, 但是不幸的是,对象的属性并不支持这个关键字,而且 const 没有包含于任何一个 ECMA 规范中。 

    Right:
    
    var SECOND = 1 * 1000;
    
    function File() {
    
    }
    
    File.FULL_PERMISSIONS = 0777;
    
    Wrong:
    
    const SECOND = 1 * 1000;
    
    function File() {
    
    }
    
    File.fullPermissions = 0777;
  11. 对象、数组的创建

    使用尾随逗号,尽量用一行来声明,只有在编译器不接受的情况下才把对象的 key 用单引号包裹。 使用字面表达式,用 {}, [] 代替 new Array, new Object。

    Right:
    
    var a = ['hello', 'world'];
    
    var b = {
    
    good: 'code',
    
    'is generally': 'pretty',
    
    };
    
    Wrong:
    
    var a = [
    
    'hello', 'world'
    
    ];
    
    var b = {"good": 'code'
    
    , is generally: 'pretty'
    
    };
  12. 使用 === 比较符

写代码并不是在背这些 stupid rules 。使用 === 操作符来进行比较操作,它会完全按照你的期望来执行。

Right:

var a = 0;

if (a === '') {

console.log('winning');

}

Wrong:

var a = 0;

if (a == '') {

console.log('losing');

}

三元操作符不应该写在一行,将它分割到多行。

Right:

var foo = (a === b)

? 1

: 2;

Wrong:

var foo = (a === b) ? 1 : 2;

使用有意义的判断条件

所有复杂的条件判断都需要赋予一个有意义的名字或者方法。

Right:
var isValidPassword = password.length >= 4 && /^(?=.*\d).{4,}$/.test(password);
if (isValidPassword) {
console.log('winning');
}
Wrong:
if (password.length >= 4 && /^(?=.*\d).{4,}$/.test(password)) {
console.log('losing');
}

尽早的从函数中返回

为了避免深入嵌套的 if 语句,请尽早的从函数中返回。

Right:
function isPercentage(val) {
    if (val < 0) {
        return false;
    }
    if (val > 100) {
        return false;
    }
    return true;
}
Wrong:
function isPercentage(val) {
    if (val >= 0) {
        if (val < 100) {
            return true;
        } else {    
            return false;
        }
    
    } else {
        return false;
    }
}
针对这个示例,甚至可以进一步精简优化:
function isPercentage(val) {
    var isInRange = (val >= 0 && val <= 100);
    return isInRange;
}

使用单行注释风格

不管是单行注释还是多行注释,都使用 // 。 同时请尝试在更高层次来编写注释(解释函数整体的思路), 只在解释一些难以理解代码的时候添加注释,而不是给一些琐碎的东西加上注释。

文件命名

单词之间使用 _ underscore 来分割,如果你不想暴露某个文件给用户,你也可以用 _ 来开头

Right:
child_process.js
string_decoder.js
_linklist.js
Wrong:
childProcess.js
stringDecoder.js

空格

在所有的操作符前后都添加空格,function 关键字后面添加空格

Right:
var add = function (a, b) {
return a + b;
};
Wrong:
var add=function(a,b){
return a+b;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值