1 什么是可维护的代码
可理解性——其他人可以接受代码并理解它的意图和一般途径,而无需原开发人员的完整解释。
直观性——代码中的东西一看就能明白,不管其操作过程多么复杂。
可适应性——代码以一种数据上的变化不要求完全重写的方法撰述。
可扩展性——在代码架构上已考虑到在未来允许对核心功能进行扩展。
可调试性——当有地方出错时,代码可以给予你足够的信息来尽可能直接地确定问题所在。
2 代码约定
1)可读性
可读性与代码作为文本文件的格式化方式有关。可读性的大部分内容都是和代码的缩进相关。可读性的另一方面是注释。
2)变量和函数命名
3)变量类型透明
3 松散耦合
1)解耦HTML/JavaScript
HTML呈现应该尽可能与JavaScript保持分离。当JavaScript用于插入数据时,尽量不要直接插入标记。一般可以在页面中直接包含并隐藏标记,然后等到整个页面渲染好之后,就可以用JavaScript显示该标记,而非生成它。另一种方法是进行Ajax请求并获取更多要显示的HTML,这个方法可以让同样的渲染层来输出标记,而不是直接嵌在JavaScript中。
2)解耦CSS/JavaScript
JavaScript只通过动态更改样式类而非特定样式。
3)解耦应用逻辑/事件处理程序
将应用逻辑和事件处理程序相分离,这样两者分别处理各自的东西。一个事件处理程序应该从事件对象中提取相关信息,并将这些信息传送到处理应用逻辑的某个方法中。
一下是要牢记的应用和业务逻辑之间松散耦合的几条原则:
勿将event对象传给其它方法;只传来自event对象中所需的数据;
任何可以在应用层面的动作都应该可以在不执行任何事件处理程序的情况下进行;
任何事件处理程序都应该处理事件,然后将处理转交给应用逻辑。
4 编程实践
1 尊重对象所有权
不要为实例或原型添加属性
避免全局量
避免与null进行比较
使用常量
二、性能
1 注意作用域
1)避免全局查找
可能优化脚本性能最重要的就是注意全局查找。使用全局变量和函数肯定要比局部的开销更大,因为要设计作用域链上的查找。
糟糕的例子:
function updateUI() { var imgs = document.getElementByTagName("img"); for(var i = 0, len = imgs.length; i < len; i++) { imgs[i].title = document.title + " image" + i; } var msg = document.getElementById("msg"); msg.innerHTML = "Update complete."; }