前言
这是我参加【青训营 x 字节前端训练营】✍🏻 笔记创作活动的第 4 天
课程收益
- 了解不同编程范式的起源和适用场景
- 掌握 JavaScript 在不同的编程范式特别是函数式编程范式的使用
- 掌握创建领域特定语言的相关工具和模式
编程语言
- 机器语言
- 汇编语言
- 高级语言
- C: "中级语言"面向过程式语言代表
- 可对位,字节地址,直接操作
- 代码和数据分离倡导结构化编程
- 功能齐全:数据类型和控制逻辑多样化
- 可移植能力强
- C++ : 面向对象语言代表
- C with Classes
- 继承
- 权限控制
- 虚函数
- 多态
- Lisp: 函数式语言代表
- 与机器无关
- 列表: 代码即数据
- 闭包
- JavaScript:基于原型和头等函数的多范式语言
- 过程式
- 面向对象
- 函数式
- 响应式
编程范式
- 程序语言特性
- 是否允许副作用
- 操作的执行顺序
- 代码组织
- 状态管理
- 语法和词法
- 编程范式
- 命令式
- 面向过程
- 面向对象
- 声明式
- 函数式
- 响应式
- 命令式
- 过程式编程
- 自定向下
- 结构化编程
- 面向过程
- 问题
- 数据与算法关联弱
- 不利于修改和扩充
- 不利于代码重用
- 封装
- 将初始变量及函数放入类中
- 使用式只需实例化对象,然后调用其中的方法
- 继承
- 无需重写的情况下进行功能扩充
- 示例
oldClass extends newClass
- 多态
- 不同的结构可以进行接口共享,进而达到函数复用
- 依赖注入
- 去除代码耦合
- 问题
- 五大原则
- 单一职责原则 SRP
- 开放封闭原则 OCP
- 里式替换原则 LSP
- 依赖倒置原则 DIP
- 接口分离原则 ISP
- 函数式编程
- 函数是"第一等公民"
- 纯函数/无副作用
- 高阶函数/闭包
- 可缓存
- 可移植
- 可测试
- 可推理
- 可并行