“程序是给人读的,只是偶尔让计算机执行一下。” ———— 高德纳
第一部分 编程风格
1. 基本的格式化
- 统一使用制表符进行缩进
- 注意ASI(自动分号插入)
function fn() {
return // 这里会自动插入分号 导致返回 undefinedreturn // 这里会自动插入分号 导致返回 undefined
{
title: "xxx",title: "xxx",
}
}
- 行的长度尽量不要超过80个字符
- 当行的长度超过80个字符需要换行时,我们要在 运算符 后面进行换行,并且在第二行前使用两个缩进(总是将一个运算符置于行尾,ASI就不会自作主张地插入分号,也就避免了错误的发生)
callAFunction(document, element, window, "some string value", true, 123,
navigator);
- 针对4有一个例外:当给变量赋值时,第二行的位置应当和赋值运算符的位置保持对其
var result = someting + anotherTing + yetAnotherTing + somethingElse +
anotherSometingElse;
- 使用空行分隔语义不相关的代码
- 在方法之间
- 局部变量声明与第一条语句之间
- 多行/单行注释之间
- 方法内的逻辑片段之间
if(w1 && w1.length) {
for(i = 0; l = w1.length; i < l; i ++) {
p = wl[i];
type = Y.Lang.type(r[p]);
if(s.hasOwnProperty(p)) {
if(merge && type == 'object') {
Y.mix(r[p], s[p]);
}
}
}
}
- 采用大驼峰式命名构造函数,小驼峰式命名变量与普通函数
- 使用带有含义的命名,避免无意义的命名,变量命名使用名词,函数命名使用动词,使用大写字母加下划线的方式命名常量
var MAX_COUNT = 10;
var count = 10;
function Person(name, age) {
this.name = name;
this.age = age;
}
function getName() {
//...
}
- 多行字符串使用 + 连接
- 不推荐 八进制(已经废除) 、浮点数省略写法
// 都是不推荐的写法
var price = 10.;
var price = .1;
- null的正确用法是作为object的占位符,不要将null的用法与undefined搞混
- 推荐使用对象直接量与数组直接量
2. 如何添加注释
- 建议注释前总有一个空行
// 好的写法
if(condition) {
// 看!我的前面有一个空行
allowed();
}
if(codition) {
/*
* 看!
* 我的
* 前面
* 也有
* 一个空行
* /
allowed();
}
- 双斜线后敲入一个空格 使注释文本相对代码有一定的偏移
- 缩进层级与代码保持一致
- 代码后面的单行注释要有一个空格进行分隔
var result = something + sometingElse; // 看!前后分别有一个空格
- 多行文字注释使用多行注释,多行代码(文字)注释使用单行注释
// 好的写法
// if(condition) {
// doSomething();
// thenDoSomethingElse();
// }
- 多行注释星号后面要跟一个空格
- 应当只在代码表述不够清晰时使用注释,具体分为以下几种情况
- 难于理解的代码
- 可能被误认为错误的代码
- 浏览器兼容代码(特性hack)
- 使用合适的文档生成工具
3. 语句和表达式
4. 变量、函数、运算符
第二部分 编程实践
第三部分 自动化