node.js编程规范

B.1缩进

因为Node.js代码中很容易写出深层的函数嵌套,过多的空格会给阅读带来不便,因此我们选择两空格缩进

B.2行宽

为了保证在任何设备上都可以方便地阅读,我们建议把行宽限制为80个字符。

B.3 语句分隔符

建议一律使用分号( ; ),哪怕一行只有一个语句,也不要省略分号。

B.4 变量定义

永远使用var 定义变量,而不要通过赋值隐式定义变量。因为通过赋值隐式定义的变量总是全局变量,会造成命名空间污染。

使用var 定义变量时,确保每个语句定义一个变量,而不要通过逗号( , )把多个变量隔开。

B.5 变量名和属性名

我们使用小驼峰式命名法(lower camel case)作为所有变量和属性的命名规则,不建议使用任何单字母的变量名。

varyourName = 'BYVoid'; 

B.6函数

对于一般的函数我们同样使用小驼峰式命名法。但对于对象的构造函数名称(或者不严格地说“类”的名称),我们使用大驼峰式命名法(upper camel case),也称为Pascal命名法

var someFunction = function ()
{
  return 'something';
};
function anotherFunction() {
  return 'anything';
}
function DataStructure() {
  this.someProperty = 'initialized';
}

B.7引号

JavaScript中单引号( ' )和双引号( " )没有任何语义区别,两者都是可用的。我们建议一律统一为单引号,因为JSON、XML都规定了必须是双引号,这样便于无转义地直接引用。

B.8 关联数组的初始化

将var = { 放在一行,下面每行一对键值,保持两空格的缩进,以分号结尾,}; 最后单独另起一行。对于每对键值,除非键名之中有空格或者有非法字符,否则一律不用引号。

B.9等号

尽量使用=== 而不是== 来判断相等,因为== 包含了隐式类型转换

B.10 命名函数

尽量给构造函数和回调函数命名,这样当你在调试的时候可以看见更清晰的调用栈。

对于回调函数,Node.js的API和各个第三方的模块通常约定回调函数的第一个参数是错误对象err,如果没有错误发生,其值为undefined。

B.11 对象定义

尽量将所有的成员函数通过原型定义,将属性在构造函数内定义,然后对构造函数使用new 关键字创建对象。绝对不要把属性作为原型定义,因为当要定义的属性是一个对象的时候,不同实例中的属性会指向同一地址。除非必须,避免把成员函数定义在构造函数内部,否则会有运行时的闭包开销。

//错误:
function FooObj(bar) {
  this.bar = bar;
  this.func = function ()
  {
    console.log(this.arr);
  };
}
FooObj.prototype.arr = [1, 2, 3];
var obj1 = newFooObj('obj1');
var obj2 = newFooObj('obj2');
obj1.arr.push(4);
obj1.func(); // [1, 2, 3, 4] 
obj2.func(); // [1, 2, 3, 4] 

B.12继承

首先,避免使用复杂的继承,如多重继承或深层次的继承树。如果的确需要继承,那么尽量使用Node.js的util模块中提供的inherits函数。

 

posted @ 2014-08-11 23:31  tchey  阅读(345)  评论(0编辑  收藏  举报