模块化编程原则

本文摘选自 《JavaScript 应用程序设计》【Eric Elliott著 吴斌译】【机械工业出版社】

模块化编程原则

你可以将模块理解为规模较小的独立应用程序。以模块自身的角度看来,每个模块都拥有完整的功能集并可充分用于测试。为了让每个模块更加专注于自己的工作,尽可能地将模块的颗粒度控制在较细的范围内。

模块应该具备:

  • 专一性

    每个模块仅为一项任务或功能负责,模块内部的所有代码逻辑应当围绕这一任务目标而展开,模块对外界暴露的API应该是简洁而干净的。
    
  • 独立性

    模块对其他模块的了解应该越少越好。模块彼此间不允许直接调用,它们之间的通信方式应当建立在一个中介物上, 比如一个集中式的事件分发系统,或者是一个命令对象。
    
  • 拆分性

    即使与其他模块隔离开也不会影响一个模块的正常测试与使用。可以把模块比作是组成家庭影院的各个设备,一个家庭影院通常会包含影碟机、收音机、电视机、功放和音箱等设备,所有这些设备都可以独立工作。即使你搬走了影碟机,剩余的设备也可以正常工作。
    
  • 重组性

    模块之间能够以各种方式组合搭配使用,利用模块的这特性你可以构建出软件的不同版本,甚至是一个全新的应用程序。
    
  • 替换性

      两个模块间只要都遵循了相同接口实现,那么就能够互相替换使用,而应用程序中的其余部分则不会受到影响,这里请注意是接口实现并不是模块内部的代码实现。举例来说, 应用中有两个数据模块, 其中一个模块A的数据源于远端的REST接口项绑定, 另一个模块B的数据源则使用了本地存储, 两者对外接口一致, 则模块A可以替换成模块B。
    

添加新评论