可维护性

  1. 大部分开发人员都花费大量的时间维护他人代码;

  2. 可维护性代码的特点:

    • 可理解性 -- 能脱离原开发人员的解释接手并理解代码
    • 直观性 -- 代码一眼便能看懂
    • 可适应性 -- 能适应数据和初始条件的变化
    • 可扩展性 -- 考虑未来对核心功能的扩展
    • 可调试性 -- 足够的错误信息

代码约定

学习代码规范的途径:github + 各个前端团队规范。

  1. 可读性

    1. 缩进
    2. 注释
      • 函数和方法注释
      • 大段代码(功能模块)注释
      • 复杂算法注释
      • Hack 注释
    3. 变量和函数命名
      • 变量名使用表意 名词(可使用表语修饰)
      • 函数名应为 动宾结构
      • 变量和函数名字应该让人一看便知其作用(不用担心命名长度)
    4. 变量类型透明:拒绝 JS 的过渡动态性,维持变量的数据类型
  2. 松散耦合:应用的某一部分过分依赖于另一部分,是为 过度耦合,如乱麻,难于维护

    1. 解耦 HTML/JavaScript易于确定错误来源
      • 避免内联 JS 代码
      • 避免 HTML 事件处理程序
      • 避免 JavaScript 内包含大量 HTML 代码(innerHTML
    2. 解耦 CSS/JavaScript
      • 使用类型更变取代直接的 style 更变
      • 杜绝只能在 IE 下使用的 CSS 表达式嵌入 JavaScript
    3. 解耦 应用逻辑/事件处理程序
      • 应用逻辑应该能不依赖事件也可以运行,方便调试
      • 事件处理程序处理事件,处理权转交给应用逻辑,易于排错
  3. 编程实践

    1. 尊重对象所有权(团队开发时)
      • 不能修改不属于你的对象
      • 不能修改不属于你负责的原型
      • 不能修改不属于你的对象的属性和方法
      • 不能轻易篡改原生类型的属性和方法
      • 只能创建包含所需功能的新对象(副本),并对你的新副本扩展
      • 只能创建你的自定义类型,继承需要进行修改的类型,为你的自定义类型添加新属性、方法
    2. 避免全局变量和全局函数
      • 不轻易创建全局变量和函数
      • 谨记使用 var 声明变量,防止不经意的全局化
      • 使用 命名空间(用于放置功能的对象)
    3. 避免与 null 的比较
      • 使用 instanceof 检测比较
      • typeof 检查判断
  4. 使用常量:将数据从应用逻辑分离
    • 重复值 -- 在多处都需要用到的值应该抽取为一个常量
    • 用户界面字符串 -- 任何用于显示给用户的字符串,都应该抽取出来以方便国际化
    • URLs -- 存在变更的可能性
    • 任何在将来可能会改变的值