编程范式 | 青训营笔记

54 阅读2分钟

编程范式

课程背景

前端的主要编程语言为 JavaScript

JavaScript 作为一种融合了多种变成范式的语言,灵活性非常高

前端开发人员需要根据场景在不同编程范式间自如切换

进一步需要创造领域特定语言抽象业务问题

编程语言

机器语言

汇编语言

高级语言

JavaScript基于圆形和头等函数的头等函数的多范式语言,它是过程式、面向对象、函数式、响应式

常见的编程范式

  • 命令式

    • 面向过程
    • 面向对象
  • 声明式

    • 函数式
    • 响应式

过程式编程:

自顶向下、结构化编程

  • 程序

    • 模块

      • 变量

        • 数据结构
      • 函数

        • 函数
        • 语句

结构化编程:

顺序结构、选择结构、循环结构

JS中的面向过程

export var car={
    //数据
}
export function fun(params){
    //语句
}
function main(){
    fun()
}

面向过程问题

  • 数据与算法关联弱
  • 不利于修改和扩充
  • 不利于代码重用

面向对象编程

  • 封装:关联数据与算法
  • 继承:无需重写的情况下进行功能扩充
  • 多态:不同的结构科技进行接口共享,进而达到函数复用
  • 依赖注入:去除代码耦合

面向对象编程——五大原则

  • 单一职责原则SRP(Single Responsibility Principle)
  • 开放封闭原则OCP(Open - Close Principle)
  • 里式替换原则LSP(the Liskov Substitution Principle LSP)
  • 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
  • 接口分离原则ISP(the Interface Segragation Principle ISP)

思考:面向对象编程有什么缺点,为什么推荐函数式编程

面向对象臃肿,有时只想要有一个函数却获得了一堆函数集合,耦合度高,不利于维护

函数是编程:函数是“一等公民”,纯函数、无副作用,便于使用高阶函数和闭包

函数式编程

  • 可缓存
  • 可移植
  • 可测试
  • 可推理
  • 可并行

闭包

组合

容器

响应式编程

  • 异步/离散的函数式编程

    • 数据流

    • 操作符

      • 过滤
      • 合并
      • 转化
      • 高阶

观察者模式

迭代器模式