一、代码风格规范
二、编程实践
“构建软件设计的方法有两种:一种是把软件做得很简单以至于明显找不到缺陷;另一种是把它做得很复杂以至于找不到明显的缺陷。”
1、组件松耦合
2、避免全局变量 -- 单全局变量(单独的命名空间:$、dojo)
3、拆分应用逻辑和事件处理代码
4、值检测的最佳实践:
- 基本值 - typeof运算符:字符串、数字、布尔值、undefined + 函数 (instanceof 会有跨frame的问题)
- 引用值 - instanceof运算符:Date、RegExp、Error
- 数组 - Array.isArray() (ES5引入,其他判断方式都可能出现问题,老方式:Object.prototype.toString.call(value) === "[Object Array]")
- 判断属性是否存在 - in 运算符(不会去读属性的值,避免0、null值等的影响)—— 如果只想检测实例对象 - hasOwnProperty()
5、抽离配置数据:URL、展示给用户的字符串、重复的值、页面设置、可能发生变更的值 - 单独文件管理
6、主动抛出错误 - 错误类型:
- EvalError - 通过eval()执行代码时发生的错误
- RangeError - 一个数字超出它的边界
- ReferenceError - 期望对象不存在
- SyntaxError - 给eval()传递的代码中有语法错误
- TypeError - 变量不是期望的类型
- URIError - 给encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()等函数传递格式非法的URI字符串
7、锁定对象、阻止修改的方法:
- Object.preventExtension() - 防止扩展,Object.isExtensible() - 检查是否调用了防扩展
- Object.seal() - 密封对象, Object.isSealed()
- Object.freeze() - 冻结对象,Object.isFrozen()
三、自动化
1、文件目录和接口:用文件夹划分类型、文件分割类别 - 依赖构建工具的需求
2、校验
3、文件合并和加工
4、文件精简和压缩
5、文档化
6、自动化测试
7、打包:开发、集成、发布等多种构建版本