编程范式|青训营笔记

79 阅读2分钟

编程语言

  • 机器语言
  • 汇编语言
  • 中级语言:面对过程代表 eg:c
  • 高级语言
  1. 面向对象代表 eg:c++
  2. 函数式代表 eg:lisp
  3. 多范式代表 eg:javascript

编程范式

命令式

面向过程,面向对象

过程式编程

  • 自顶向下
  • 结构化编程
  • 面向过程问题:
  1. 数据与算法关联弱
  2. 不利于修改和补充
  3. 不利于代码重用

面向对象编程

  • 封装
  • 多态
  • 继承
  • 依赖注入
  • 面向对象编程的五大原则:
  1. 单一职责原则
  2. 开放封闭原则
  3. 里式替换原则
  4. 依赖倒置原则
  5. 接口分离原则

面向对象 vs 函数式

面向对象编程

  • 优点:面向对象编程通常使用命令式的编码风格,声明式(declarative style)的用得比较少。这样的代码读起来,像是一组直接的、计算机很容易就能遵循的指令。
  • 缺点:面向对象编程往往需要共享状态。对象及其行为常常会添加到同一个实体上,这样一来,如果一堆函数都要访问这个实体,而且这些函数的执行顺序不确定的话,很可能就会出乱子了。 函数式编程
  • 优点:用函数式范式来编程,就不需要担心共享状态或者副作用了。这样就避免了几个函数在调用同一批资源时可能产生的 bug 了。拥有了“无参风格”(隐式编程)之类的特性之后,函数式编程就大大简化了。
  • 缺点:代码如果过度利用了函数式的编程特性(如无参风格、大量方法的组合),就会影响其可读性,从而简洁度有余、易读性不足。

声明式

函数式,响应式

函数式编程

  • 函数是第一等公民
  • 纯函数/无副作用
  • 高阶函数/闭包

响应式编程

异步/离散的函数式编程

  • 数据流
  • 操作符:
  1. 过滤
  2. 合并
  3. 转化
  4. 高阶

观察者模式

迭代器模式

Promise/EventTarget超集