node develop expirements

20

Click here to load reader

Upload: aleafs

Post on 06-Jul-2015

1.016 views

Category:

Technology


11 download

DESCRIPTION

node.js expirements

TRANSCRIPT

Page 2: Node develop expirements

目录约定

• bin

• build

• app

• lib

• test

Page 3: Node develop expirements

.gitignore / svn:ignore

• conf(etc, config, ...)

• log(s)

• temp(tmp)

• node_modules

• ...

Page 4: Node develop expirements

package.json

• “=” 还是 “>=”?

• node_modules何时安装?

Page 5: Node develop expirements

Makefile

• test

• coverage

• func

• benchmark

Page 6: Node develop expirements

build

• build.js

• properties

• build/tpl/*

Page 7: Node develop expirements

配置文件

• 忘掉json,慎用js,推荐ini

• 配置项的边界测试• 切勿滥用配置项• 认真写注释

/** * 用以... * 取值范围 * XXX: 注意 * 联系人 */

Page 8: Node develop expirements

unittest

• mocha + should

• case命名

• test/unit/a.js

Page 9: Node develop expirements

bin

• appctl {start|stop|reload|restart|status}

• logrotate

Page 10: Node develop expirements

我是偏执狂

• 不用相对路径(用__dirname)

• 外部变量只在⼀一个地方读• 目录有等级,规避“越级”require

• 只写函数,不执行

Page 11: Node develop expirements

快速迭代

• 自顶向下的开发,demo先跑起来

• 建立benchmark基准,不断修正

• status

Page 12: Node develop expirements

可测性

• 接口简单,规避复杂参数(对象)• 代码分层,通信协议与业务协议分离• 单⼀一职责!

Page 13: Node develop expirements

可读性• 机器可读• 日志格式

• 接口标准化(code和message分离,code可穷举)

• 人可读• 无脑常量

• “白富美”有风险

• 不可见字符

Page 14: Node develop expirements

变量命名

• 变量名体现“作用域”

• 服务级(进程级)变量

• 请求级变量

• 变量与属性名master.register(port, path, cnum);

master.register(port, path, {/** ‘cnum‘ : 1,*/‘child_num’ : 1,

});

Page 15: Node develop expirements

关于进程

• master

• worker

• daemon ...

Page 16: Node develop expirements

异常处理

• error or exception?

• 强依赖越早暴露越好

Page 17: Node develop expirements

稳定性

• nginx upstream

• 监控日志,尤其是error和exception

• latency监控(阈值取多少)

• 监控gc(--trace_gc, ...)

• 允许core dump,并监控core文件

Page 18: Node develop expirements

几个原则

• private static变量,暴露exports.clean

• 始终考虑“深拷贝”和“浅拷贝”

Page 19: Node develop expirements

让代码更漂亮

• 适当的空行• 等号(冒号)对齐• 代码折叠• vim: set expandtab && ret

• vim: set ff=unix

Page 20: Node develop expirements

node-shark

• https://github.com/aleafs/node-shark