昨天跳过《javascript高级程序设计》前面几章书的内容,直接跳到最佳实践那一章,然而那一张说的又和我在实习的时候的实践,有很大的关系,所以我就以为应该整理出来,分享一下,毕竟仍是挺好的一部分。javascript
1、编写可维护的代码css
可维护的代码就有一些特征:html
(1)可理解性java
(2)直观性算法
(3)可适应性编程
(4)可拓展性数组
(5)可调试性dom
2、代码约定函数
一、可读性:代码缩进大小为4个空格工具
须要进行注释的地方:
(1)函数和方法:如函数的目的和用于完成任务所可能使用的算法。
(2)大段代码:解释这一大段代码是作什么的
(3)复杂的算法:解释算法是怎么作的
(4)Hack:解释特殊的hack片断是怎么作的。
二、变量和函数命名:(命名要规范)
(1)变量名为名词
(2)函数名为动词
(3)合乎逻辑,不该担忧长度
(4)变量类型透明,好比经过初始化指定变量类型、经过匈牙利标记、经过指定类型的类型注释。
三、要注意松散耦合
(1)解耦HTML/javascript: 尽可能避免在html页面中直接插入<script>标签
(2)解耦css/javascript:尽可能避免直接操做style,能够经过动态更改样式类而非特定样式实现。这个仍是比较重要的,直接更改类比批量更改样式好太多了
(3)解耦应用逻辑/事件处理程序:将应用逻辑和事件处理程序相分离。
应用和业务逻辑之间松散耦合的几条原则:
(1)勿将event对象传给其余方法,只传来自event对象中所需的数据;
(2)任何能够在应用层面的动做,都应该能够在不执行任何事件处理程序的状况下进行;
(3)任何事件处理程序都应该处理事件,而后将处理转交给应用逻辑。
3、编程实践:
一、尊重对象全部权:也就是不能修改不属于你的对象。就是不要为实例或原型添加属性和方法,不要重定义已存在的方法。
二、避免全局量: 就是要尽可能避免全局变量和函数。建立一个命名空间,而后将其所须要的命名都写上去。
三、在类型检测时尽可能避免与null进行比较,尽可能使用values instanceof Array。
能够用如下技术,尽可能避免与null比较的代码
(1)若是值为一个引用类型,使用instanceof操做符检查其构造函数
(2)若是值为一个基本类型,使用typeof检查其类型
(3)若是是对象包含某个特定的方法名,则使用typeof操做符确保指定名字的方法存在对象上。
四、尽可能使用常量
好比:这样去引用。
五、将数据和使用它的逻辑进行分离所注意的值的类型:
(1)重复值,能够抽取出来为一个常量
(2)用户界面字符串:能够抽取出来方便国际化
(3)URLs:统一一个地方放全部的URL
(4)任何可能改变的值:抽取出来做为一个常量。
4、性能问题
一、尽可能避免全局查找,能够将元素声明为一个统一的变量
二、尽可能避免with语句
三、考虑算法复杂度,尽可能避免没必要要的属性查找,尽可能使用数字化的数组位置进行访问,也可使用命名属性。
四、优化循环:可使用从大到小的减值迭代方法;简化终止条件;简化循环体;使用后测试循环,也就是do-while循环
,
五、展开循环,使用duff装置。
六、避免双重解释。尽可能避免某些代码求值或者建立新函数。尽可能使用原生方法、switch方法和位运算符。
5、最小化语句数
一、尽可能多个变量声明。直接一个var值,而后用,隔开就行了。
二、插入迭代值,好比
三、使用数组和对象字面量
6、优化DOM交互
一、最小化现场更新:就是更新的时候,将所有dom都写完,而后再统一渲染
二、尽可能使用innerHTML
三、尽可能使用事件代理:在文档级别附加事件处理程序或者将事件程序附加到更高层的地方负责多个目标的事件处理。
四、尽可能避免使用htmlCollection,在下面几种状况会产生htmlCollection,进行getElementsByTagName()调用,获取元素的childNodes属性,获取元素的attributes属性,访问特殊属性:document.form,document.images.
7、部署代码
一、可使用构建工具
二、进行验证,尽可能发掘一些潜在的问题:
(1)eval()的使用
(2)未声明变量的使用
(3)遗漏的分号
(4)不恰当的换行
(5)错误的逗号使用
(6)语句周围遗漏的括号
(7)switch分支语句中遗漏的break;
(8)重复声明的变量
(9)with的使用
(10)错误使用的等号
(11)没法到达的代码
三、进行代码压缩:包括文件压缩和HTTP压缩。
8、js文件,css文件要分文件使用,这样便于维护。
总的来讲,这一章将的主要是怎么将代码写好,写的更加优秀,里面说到的不少内容,我在实习的时候,都遇到过,平时没怎么注意,可是这确是不少人须要注意的地方。
讲的很全面也很好。因此推荐你们尽可能达到这些标准,让本身的代码更加优秀。由于当你入门以后,你就会考虑怎么样将本身的代码写的更好了。