编程范式 | 青训营笔记

79 阅读2分钟

前言

这是我参加【青训营 x 字节前端训练营】✍🏻 笔记创作活动的第 4 天

课程收益

  1. 了解不同编程范式的起源和适用场景
  2. 掌握 JavaScript 在不同的编程范式特别是函数式编程范式的使用
  3. 掌握创建领域特定语言的相关工具和模式

编程语言

  1. 机器语言
  2. 汇编语言
  3. 高级语言
  4. C: "中级语言"面向过程式语言代表
    • 可对位,字节地址,直接操作
    • 代码和数据分离倡导结构化编程
    • 功能齐全:数据类型和控制逻辑多样化
    • 可移植能力强
  5. C++ : 面向对象语言代表
    • C with Classes
    • 继承
    • 权限控制
    • 虚函数
    • 多态
  6. Lisp: 函数式语言代表
    • 与机器无关
    • 列表: 代码即数据
    • 闭包
  7. JavaScript:基于原型和头等函数的多范式语言
    • 过程式
    • 面向对象
    • 函数式
    • 响应式

编程范式

  1. 程序语言特性
    • 是否允许副作用
    • 操作的执行顺序
    • 代码组织
    • 状态管理
    • 语法和词法
  2. 编程范式
    • 命令式
      • 面向过程
      • 面向对象
    • 声明式
      • 函数式
      • 响应式
  3. 过程式编程
    • 自定向下
    • 结构化编程
  4. 面向过程
    1. 问题
      • 数据与算法关联弱
      • 不利于修改和扩充
      • 不利于代码重用
    2. 封装
      • 将初始变量及函数放入类中
      • 使用式只需实例化对象,然后调用其中的方法
    3. 继承
      • 无需重写的情况下进行功能扩充
      • 示例 oldClass extends newClass
    4. 多态
      • 不同的结构可以进行接口共享,进而达到函数复用
    5. 依赖注入
      • 去除代码耦合
  5. 五大原则
    • 单一职责原则 SRP
    • 开放封闭原则 OCP
    • 里式替换原则 LSP
    • 依赖倒置原则 DIP
    • 接口分离原则 ISP
  6. 函数式编程
    • 函数是"第一等公民"
    • 纯函数/无副作用
    • 高阶函数/闭包
    • 可缓存
    • 可移植
    • 可测试
    • 可推理
    • 可并行