Node 编码规范
Node 编码规范
-
缩进 ,2 个 space,tab要转换成2 space. (入乡随俗,这是Node 源码及module 采用的标准)
Eclipse设置 -
永远用 var 声明变量,不加 var 时,会污染顶层上下文
-
操作符与操作算子之间要有空格
Right:
var string = 'Foo' + bar;
[/code]Wrong:
var string = 'Foo'+bar;
[/code] -
使用string 时,用单引号替代双引号(写JSON 时除外)
Right:
var foo = 'bar'; var http = require('http');
[/code]Wrong:
var foo = "bar"; var http = require("http");
[/code] -
大括号位置
Right:
if (true) { console.log('winning'); }
[/code]Wrong:
if (true) { console.log('losing'); }
[/code] -
Camel 命名法
采用以下规则:
函数和变量:functionNamesLikeThis, variableNamesLikeThis, - 类名和枚举类型:ClassNamesLikeThis, EnumNamesLikeThis,
- 类方法:methodNamesLikeThis
- 常量:SYMBOLIC_CONSTANTS_LIKE_THIS
Right :
// var definition var adminUser = db.query('SELECT * FROM users ...'); // function definition function run(){ } // Class definition function BankAccount() { }[/code]
Wrong:
var admin_user = db.query('SELECT * FROM users ..."); function bankAccount() { }[/code]
文件命名
单词之间使用 ‘_’ underscore 来 分割,如果你不想暴露某个文件给用户 , 你也可以用‘_’ 来开头
Right :
child_process.js string_decoder.js _linklist.js[/code]
不使用
const关键字 虽然V8 和 Mozilla 都支持它,但它不是ECMA 标准,我们用以下方式定义常量:
Right:
var SECOND = 1 * 1000; function File() { } File.FULL_PERMISSIONS = 0777;[/code]
比较操作 有的场景下应该用 "===" 替代 "==" 当你遇到这些符号比较时 :
0 undefined null false true
你应该小心谨慎 比如
' \t\r\n' == 0比较结果是true
Right:
var a = 0; if (a === '') { console.log('winning'); }[/code]
Wrong:
var a = 0; if (a == '') { console.log('losing'); }[/code]
使用字面表达式,用 '{}' ,'[]' 代替
new Array,
new Object
不要使用
string,
bool,
number的对象类型,即不要调用
new String,
new Boolean,
new Number
Object ,Array 创建,当有多个元素时,注意分行排列时逗号的位置
Right:
var a = ['hello', 'world']; var b = { good: 'code', 'is generally': 'pretty', };[/code]
Wrong:
var a = [ 'hello', 'world' ]; var b = {"good": 'code' , is generally: 'pretty' };[/code]
避免使用 “with” 与 “eval”
for-in 循环,仅在 object/hash/map 时使用,绝不要对Array 使用
不要把Array 当做关联数组或Object 使用,即你不应该用非数字作为Array 的索引
(Phper 尤其注意这点)
Wrong :
var a = []; // use '{}' instead a['hello'] = 'shit'; a['foo'] = 'bar';[/code]
Node 的异步回调函数的第一个参数应该是错误指示
function cb(err, data , ...) {...}[/code]
类继承写法,尽管有各种方式来实现继承,但最为推荐的是Node 的标准写法
function Socket(options) { ... stream.Stream.call(this); ... } util.inherits(Socket, stream.Stream);[/code]
如果你在模块中 exports 一个类,对于此类的私有成员变量,建议加上 "_" 前缀以示区分
变量声明时,应该每行声明一个,不应该都写在一行(尽管这被JSLint 所推荐)。
Right:
var assert = require('assert'); var fork = require('child_process').fork; var net = require('net'); var EventEmitter = require('events').EventEmitter;[/code]
Wrong:( Node 源代码已经将此方式全部修正)
var assert = require('assert') , fork = require('child_process').fork , net = require('net') , EventEmitter = require('events').EventEmitter;[/code]
注释规范,采用 Google 的js 规范
Right :
/** * Queries a Baz for items. * @param {number} groupNum Subgroup id to query. * @param {string|number|null} term An itemName, * or itemId, or null to search everything. */ goog.Baz.prototype.query = function(groupNum, term) { // ... };[/code]
更多案例请参看以上链接
多参考、模仿 Node 源码的编程风格 ^_^
- 点赞
- 收藏
- 分享
- 文章举报
- Node 编码规范
- Node 编码规范(优秀是一种习惯)
- Node.js 编码规范
- 程序员你为什么这么累 | 编码规范
- php 编码规范
- google编码规范-----C++其他特性(3)
- Android 命名规范和编码规范
- C++ FAQ学习笔记 27章 编码规范
- Android 编码规范
- 驳《编码规范是技术上的遮羞布》自由发挥==摆脱编码规范?X
- Jquery学习之编码规范详解
- Node.js中使用Buffer编码、解码二进制数据详解
- Jsp编码规范
- 常用的JavaScript编码规范
- 编码规范 | Java函数优雅之道(上)
- Flex 编码规范
- 前端编码风格规范之 JavaScript 规范
- bootstrap css编码规范
- Python 编码规范
- 编码风格不是编码规范