JavaScript编码风格指南(中文版)

程序语言的编码风格对于一个长期维护的软件非常重要,特别是在团队协作中。如果一个团队使用统一规范的编码分风格,可以提高团队的协作水平和工作效率。编程风格指南的核心是基本的格式化规则,这些规则决定了如何编写高水准的代码。本指南来自于《编写可维护的JavaScript》这本书,基于"Java语言编码规范"和Crockford的JavaScript编程规范,还有Nicbolas的一些个人经验和喜好。写作本文旨在加深自己印象,也为了更多人的了解到JS编码风格,提高自己的编码质量。想了解更多的内容请阅读《编写可维护的JavaScript》。

1.缩进

每一行的层级由4个空格组成,避免使用Tab进行缩进。

// 好的写法 if (true) { doSomeThing(); }

2.行的长度

每行长度不应超过80个字符。如果一行超过80个字符,应当在一个运算符后换行。下一行应当增加两级缩进(8个字符)。

// 好的写法 doSomeThing(argument1, argument2, aegument3, argument4, argument5); // 不好的写法:第二行只有4个空格的缩进 doSomeThing(argument1, argument2, aegument3, argument4, argument5);

3.原始值

字符串应当始终使用双引号且保持一行,避免在字符串中使用斜线另起一行。

数字应当使用十进制整数,科学计算法表示整数,十六进制整数,或者十进制浮点小数,小数前后应当至少保留一位数字。避免使用八进制直接量。

特殊值null除了下述情况下应当避免使用。
•用来初始化一个变量,这个变量可能被赋值为一个对象。
•用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象。
•当函数的参数期望是对象时,被用作参数传入。
•当函数的返回值期望是对象时,被用作返回值传出。

避免使用特殊值undefined。判断一个变量是否定义应当使用typeof操作符。

4.运算符间距

二元预算符前后必须使用一个空格来保持表达式的整洁。操作符包括赋值运算符和逻辑运算符。

// 好的写法 for (var i = 0; i < count; i++) { process(i); } // 不好的写法:丢失了空格 for (var i=0; i<count; i++) { process(i); }

5.括号间距

当使用括号时,紧接左括号之后和紧接右括号之前不应该有空格。

// 好的写法 for (var i = 0; i < count; i++) { process(i); } // 不好的写法:参数两边有额外的空格 for (var i = 0; i < count; i++) { process( i ); }

6.对象直接量

对象直接量应当有如下格式。
•起始左花括号应当同表达式保持同一行。
•每个属性的名值对应当保持一个缩进,第一个属性应当在左花括号后另起一行。
•每个属性的名值对应当使用不含引号的属性名,其后紧跟一个冒号(之前不舍空格),其后是值。
•倘若属性值是函数类型,函数体应当在属性名之下另起一行,而且其前后均应保留一个空行。
•一组相关的属性前后可以插入空行以提升代码的可读性。
•结束的右花括号应当独占一行。

// 好的写法 var object = { key1: value1, key2: value2, func: function() { // doSomeThing }, key3: value3 }; // 不好的写法:不恰当的缩进 var object = { key1: value1, key2: value2 }; // 不好的写法:函数体周围缺少空行 var object = { key1: value1, key2: value2, func: function() { // doSomeThing }, key3: value3 };

当对象字面量作为函数参数时,如果值是变量,起始花括号应当同函数名在同一行。所有其余先前列出的规则同样适用。

// 好的写法 doSomeThing({ key1: value1, key2: value2 }); // 不好的写法:所有代码在一行上 doSomeThing({ key1: value1, key2: value2 });

7.注释

使用简洁明了注释有助于他人理解你的代码。如下情况应当使用注释。
•代码晦涩难懂。
•可能被误认为错误的代码。
•必要但不明显的针对特定浏览器的代码。
•对于对象、方法或者属性,生成文档是有必要的(使用恰当的文档注释)。

单行注释

单行注释应当用来说明一行代码或者一组相关的代码。单行注释可能有三种使用方式。
•独占一行的注释,用来解释下一行代码。
•在代码行的尾部的注释,用来解释它之前的代码。
•多行,用来注释掉一个代码块。

// 好的写法 if (condition) { // 如果代码执行到这里,则表明通过了所有安全检查 allowed(); } // 不好的写法:注释之前没有空行 if (condition) { // 如果代码执行到这里,则表明通过了所有安全检查 allowed(); } // 不好的写法:错误的缩进 if (condition) { // 如果代码执行到这里,则表明通过了所有安全检查 allowed(); } // 不好的写法:应当使用多行注释 // 这段代码进行**判断 // 然后执行 if (condition) { // 如果代码执行到这里,则表明通过了所有安全检查 allowed(); } // 好的写法:在行尾注释时,代码结尾和注释间应保留一个空格 if (condition) { // 如果代码执行到这里,则表明通过了所有安全检查 allowed(); // 执行**函数 } // 不好的写法:代码和注释间没有足够的空格 if (condition) { // 如果代码执行到这里,则表明通过了所有安全检查 allowed();// 执行**函数 } // 好的写法:在注释掉一个代码块时,应联系使用单行注释,多行注释不应当使用在此种情况下。 // if (condition) { // allowed();//执行**函数 // }

多行注释

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzffgs.html