这个博客已经过去了很久……

不过,你可以通过以下方式找到我

现在的位置: 首页 > 谈前端 > JavaScript > 正文
Javascript Guideline
2013年11月08日 JavaScript ⁄ 共 1903字 等你评论

我们强调编程风格的统一是为了彼此间更好的协作,以下内容来自:《编写可维护的Javascript》

程序是写给人读的,只是偶尔让计算机执行一下。——Donald Knuth1

一、格式化

缩进

统一使用4个空格作为缩进,请将制表符设置为4个空格

语句结尾

结尾请不要省略分号

行的长度

控制行的长度,不要超出80个字符,超出时,需手动断行。断行一般在一个运算符之后,并在第二行保留两个缩进(8个空格)

callAFunction(document, element, window, "song string value", true, 123,
        navagation);

空行

需要空行的位置:

1 方法之间

function a() {
}

function b() {
} 

2 方法中的局部变量和第一条语句之间

function a(str) {
    var foo;

    if(str === '') {
    }
}

3 在多行或当行注释之前

var foo;

// comment
function a() {
}

/*
 * multi
 * line
 */
function b() {
}

4 在方法内的逻辑片段插入空行,提高可读性

function a(str) {
    var foo;

    if(str === 'a') {
    }

    if(str === 'b') {
    }
}

命名

1 采用 Camel Case 方式命名,第一个单词首字母小写,后续单词首字母大写,构造函数使用 Pascal Case 方式命名,所有单词首字母大写

var thisIsAString = 'this is a string';

function Person() {
}

2 变量和函数避免使用无意义的命名

var count = 10; // good

var getCount = 10; // bad

3 常量全部大写并使用下划线连接

var MAX_COUNT = 10;

直接量

1 多行字符串使用 + 链接,并保持对齐

var longString = 'Here is the story, of a man ' +
                 'named Brady';

2 数字

var price = 10.; // bad

var price = .1; // bad

var num = 010; // bad 弃用八进制

3 null 是一个“占位符”

使用 null 来:

  • 初始化一个变量;
  • 和一个已经初始化的变量比较;
  • 当函数的参数期望是一个对象时,用作参数传入
  • 当函数的返回值期望是一个对象时,用作返回值传出

不要使用 null 来:

  • 校验参数是否传入
  • 检测未初始化的变量

4 避免直接使用 undefined,以保证只在变量未声明时 typeof 运算符返回正确的值

var person; // bad
console.log(typeof person); // 'undefined'
console.log(typeof foo); // 'undefined'

5 使用对象直接量

脑残了才会写:

var obj = new Object();

6 数组直接量

脑残了才会写:

var arr = new Array();

二、注释

单行注释

// 独占一行的注释,在双斜线后添加一个空格,并且这行注释之前保留一个空行,并保持与下一行代码的同样的缩进
var foo = 'foo';

var bar = 'bar'; // 代码后的单行注释注意双斜线前后保留的空格,注释不宜过长

多行注释

/*
 * 注意*号的对齐以及*号后的空格
 * 这是第二行
 */

在以下情况使用注释

1 难以理解的代码

2 可能被误认为错误的代码

3 浏览器特性 hack

文档注释

我们使用 YUI Doc 生成我们所有的文档

三、语句和表达式

花括号对其方式与块语句间隔

if(condition) { // 花括号前应有一个空格
    doSomething();
} else { // else 关键字前后也应当有空格
    doSomethingElse();
}

switch 语句的缩进、连续 case 和 default 语句

switch(condition) {
    case 'first':
        break;
    case 'second':
    case 'third':
        break;
    default:
}

通常不要省略 default ,如果一定要省略,请用注释代替

for 循环

var value = [1, 2, 3, 4],
    i, len;

for(i = 0, len = value.length; i < len; i++) {
    if(i === 2) {
        break; // continue
    }
    process(value[i]);
}

部分编程风格指南不推荐使用 continue 和 break,但合理的使用是完全允许的

for-in 循环

请明确 for-in 循环使用来遍历对象的,不要将其使用在数组上,并且所有的 for-in 循环都必须使用 hasOwnProperty,除非你明确想查找对象的原型链


  1. 高德纳 被誉为现代计算机科学的鼻祖,《计算机程序设计艺术》(The Art of Computer Programming)的作者 

友荐云推荐
×