编程范式 | 青训营笔记

113 阅读2分钟

编程范式

什么是编程范式

  • 命令式
    • 面向过程/对象
  • 声明式
    • 函数式/响应式

面向过程编程

  • 自顶向下
  • 结构化编程

缺点:数据和算法关联弱,不利于修改和补充,不利于代码重用

面向对象编程

特点

  • 封装:客观事物封装成具体的类
  • 继承:某个类型的对象可以获得另一个类型对象的属性和方法
  • 多态:一个类的方法在不同状态有不同的表达方式。不同的结构可以进行接口分享,进而达到函数复用
  • 依赖注入:在程序运用过程中,如果需要调用另一个对象行动时,无需在代码中创建被调用者,直接依赖外部注入。去除代码耦合

五大原则

  • 单一职责原则:一个列的功能要单一,不能包罗万象
  • 开放封闭原则:扩展性方面是开放的,更改性方面是封闭的
  • 里氏替换原则:子类可以替换并出现父类应该出现的任何地方
  • 依赖倒置原则:上层依赖下层
  • 接口分离原则:依赖要通过接口进行区分

函数式编程(推荐)

ramdajs

特点

  • 一等函数
  • 纯函数:不依赖于外部环境,不修改参数,没有副作用
    • 可缓存、可移植、可测试、可推理、可并行
  • 高阶函数
    • currying:使用闭包解决参数每次传来传去的麻烦
    • 组合compose
    • functor:可以被当作容器类型,支持对容器内元素进行操作
    • monad:可以去除嵌套容器的容器类型
    • applicative:直接对两个容器直接操作

响应式编程

  • 异步/离散的函数式编程
    • 数据流
    • 操作符:数据从管道一端流入,操作符构成数据管道,管道流出数据(合并、过滤、转化、异常处理、多播)

特点

  • 观察者模式:订阅使数据改变
  • 迭代器模式:数据会持续推送
  • promise(数据持续来)/everntarget(取消订阅会进行向上传导) 超集
  • monad

领域特定语言DSL

语言运行

字符串从 词法解析器-语法解析器-遍历(执行、转化成另外的语言)