编写可维护的JavaScript
读书笔记
编程风格
基本格式化
- 不要同时混用制表符和空格
- 不依赖分析器的自动插入分号,不要省略分号
- 行的长度限定在80个字符内
- 长度到达单行最大程度换行
- 第二行增加两个层级的缩进
- 在运算符之后换行
- 给变量赋值时,第二行的位置和赋值运算符保持一致
- 添加空行
- 方法之间
- 方法中的局部变量和第一条语句之间
- 多行或单行注释之前
- 方法内的逻辑片段之间插入空行,提高可读性
- 谨慎使用空行
- 命名
- 遵循驼峰格式
- 变量名前缀应是名词
- 变量名体现数据类型
count
,length
,size
表示数据类型是数字name
,title
,message
表示数据类型是字符串i
,j
,k
用于循环
- 避免没有意义的命名,如
foo
,tmp
,bar
- 函数名前缀应使用动词
can
,has
,is
返回布尔值get
返回非布尔值set
用来设置保存一个值
- 用大写字母加下划线命名常量,
MAX_COUNT
- 构造函数采用大写字母开始的驼峰格式
- 直接量
- 字符串引号
- 从头到尾保持风格一致
- 内部出现字符串界定符要注意转义
- 多行字符串要用
+
连接
- 数字
- 小数不推荐没有整数部分或小数部分,容易引起阅读者的歧义
- 不使用八进制直接量,
010
null
- 不要用
null
来检测是否传入某个参数 - 不要用
null
来检测一个未初始化的变量
- 不要用
- 使用
{}
,[]
来创建对象和数组
- 字符串引号
注释
- 单行注释
//
- 独占一行时,注释前加一个空行,且缩进和下一行代码保持一致
- 代码行尾部注释时,至少保持一个缩进,超长时,应将其置于代码行上方
- 用于注释大段代码,采用
/**/
注释代码时容易和正则表达式混淆
- 多行注释
/**/
- 注释风格与
java
一致,至少三行,/*
,*/
各占一行,其他行一*
开头 - 用于注释大段文本
- 其他规则与单行注释相同
- 注释风格与
- 让代码更清晰时添加注释
- 用于难以理解的代码
- 修改错误时,让修给有迹可循
- 浏览器特
Hack
- 文档注释
语句和表达式
- 避免使用将左括号置于块语句首行的下一行,如
Visual Studio
强制使用的对其格式,容易导致错误的分号自动插入 switch
case
和switch
保持相同的缩进- 在省略
break
时要添加特意的说明注释 - 在没有
default
时,要添加注释
- 避免使用
continue
语句,而改用条件语句 - 出保函遍历原型链,在
for-in
遍历时,都应该加上hasOwnProperty()
判断
变量、函数和运算符
- 变量声明
- 将局部变量定义作为函数内部第一条语句,符合变量提升
- 使用单个
var
- 每个变量独占一行
- 函数声明
- 函数声明应在函数调用之前,符合函数提升
- 函数内部的局部函数应该紧跟在变量声明之后
- 函数声明不应该出现在语句块之内
- 立即执行函数用
()
括起来,将强阅读性 - 避免在全局使用
use strict
,当多个函数使用use strict
时,可采用立即执行方案 - 使用
===
和!==
来代替==
和!=
- 谨慎使用
eval()
- 避免使用原始包装类型,即使用
String
,Number
,Boolean
来创建对象