最佳实践
编写可维护的代码
方便他人维护自己写的代码
读源码即可理解
适应数据变化而不必完全重写
考虑到未来可能的扩展
便于调试
代码约定
缩进等代码格式化
注释
每个函数或方法都应该包含一个注释
描述目的及可能用到的算法、参数及返回值
大段代码,注释以描述任务
复杂的算法
Hack
给变量和函数合理命名
规则
变量名
名词
函数名
动词开始
返回布尔类型值
is-Non
不必担心名称的长度
变量类型透明
初始化一个值,暗示未来的变量类型
匈牙利标记法
变量名前多加一或多个字符表数据类型
类型注释
const name /:string/ = “Kevin”;
松散耦合
某个部分过分依赖另一部分,代码就是耦合过紧,难以维护,需要经常重写
HTML与JavaScript
事件绑定
innerHTML=””
JavaScript与CSS
使用js更改样式
推荐:动态更改样式类,而非更改特定样式
解耦应用逻辑/事件处理程序
从事件对象event中提取相关信息
只传event对象中的相关数据
将信息传送给处理应用逻辑的方法中
在应用层面的动作都不依赖于事件处理程序的执行
事件处理程序响应事件,获取并传递数据
应用逻辑负责接收入参,处理结果
编程实践
尊重对象所有权
不要修改不属于你的对象
不要为实例或原型添加属性/方法
不要重定义已存在的方法
创建新功能
创建包含所需功能的新对象,并用它与相关对象进行交互
创建自定义类型,继承需要进行修改的类型,添加额外功能
避免全局量
最多创建一个全局变量,让其他对象和函数存在其中
命名空间
避免与null比较
使用常量
值类型
多处用到的值应抽取为常量
任何用于显示的字符串应被抽取出来方便国际化
公共地方存放URLs
性能
避免全局查找
访问全局变量总要比访问局部变量慢,需要遍历作用域链
将在一个函数中会用到多次的全局对象存储为局部变量
document是全局的,优化:本地变量const doc = document;
避免with语句
with语句会创建自己的作用域,增加执行代码的作用域链长度
避免不必要的属性查找
算法复杂度
常数
O(1)
常数值查找
数组查找
对数
O(log n)
线性
O(n)
对象属性查找
一旦多次用到对象属性,应将其存储在局部变量中
将属性查找替换为值查找