前言
JavaScript 作为一种融合了多种编程范式的语言,灵活性非常高。前端开发人员需要根据场景在不同编程范式间自如切换。进一步需要创造领域特定语言抽象业务问题。 本次课程帮助我们了解不同编程范式的起源和适用场景。掌握 JavaScript 在不同的编程范式特别是函数式编程范式下的使用。
程序语言特性
- 是否允许副作用
- 操作的执行顺序
- 代码组织
- 状态管理
- 语法和词法
常见编程范式
命令式
- 面向过程
- 面向对象
声明式
- 函数式
- 响应式
面向过程编程
过程式编程(Procedural programming)的核心在于模块化,在实现过程中使用了状态,依赖了外部变量,导致很容易影响附近的代码,可读性较低,后期的维护成本也较高。
缺点有:
- 数据与算法关联性弱
- 不利于修改和扩充
- 不利于代码重用
面向对象编程
面向对象编程(Object-oriented programming)的核心在于抽象,提供清晰的对象边界。结合封装、集成、多态特性,降低了代码的耦合度,提升了系统的可维护性。
特点
- 封装
- 继承
- 多态
- 依赖注入
五大原则
- 单一职责原则SRP
- 开放封闭原则OCP
- 里氏替换原则LSP
- 依赖倒置原则DIP
- 接口分离原则ISP
存在的问题
总是附带着所有它需要的隐含环境
函数式编程
函数式编程(Functional Programming)的核心在于“避免副作用”,不改变也不依赖当前函数外的数据。结合不可变数据、函数是第一等公民等特性,使函数带有自描述性,可读性较高。
特点
- 函数是“第一等公民”
- 纯函数/无副作用
- 高阶函数/闭包
优势
- 可缓存
- 可移植
- 可测试
- 可推理
- 可并行
响应式编程
响应式编程是一种基于异步数据流驱动、响应式、使用声明式范式的编程模型,需要遵循一定的响应式编程开发规范,并且有具体的类库实现。响应式编程基于数据流而不是控制流进行业务逻辑的推进。
小结
编程范式是编写代码的基本方式和方法。选择合适的编程范式可以提高代码的可重用性、可维护性和可测试性。无论使用哪种编程范式,都应该遵循良好的编码规范和惯例,使得代码易于理解和维护。