编程范式
什么是编程范式
- 命令式
- 面向过程/对象
- 声明式
- 函数式/响应式
面向过程编程
- 自顶向下
- 结构化编程
缺点:数据和算法关联弱,不利于修改和补充,不利于代码重用
面向对象编程
特点
- 封装:客观事物封装成具体的类
- 继承:某个类型的对象可以获得另一个类型对象的属性和方法
- 多态:一个类的方法在不同状态有不同的表达方式。不同的结构可以进行接口分享,进而达到函数复用
- 依赖注入:在程序运用过程中,如果需要调用另一个对象行动时,无需在代码中创建被调用者,直接依赖外部注入。去除代码耦合
五大原则
- 单一职责原则:一个列的功能要单一,不能包罗万象
- 开放封闭原则:扩展性方面是开放的,更改性方面是封闭的
- 里氏替换原则:子类可以替换并出现父类应该出现的任何地方
- 依赖倒置原则:上层依赖下层
- 接口分离原则:依赖要通过接口进行区分
函数式编程(推荐)
ramdajs
特点
- 一等函数
- 纯函数:不依赖于外部环境,不修改参数,没有副作用
- 可缓存、可移植、可测试、可推理、可并行
- 高阶函数
- currying:使用闭包解决参数每次传来传去的麻烦
- 组合compose
- functor:可以被当作容器类型,支持对容器内元素进行操作
- monad:可以去除嵌套容器的容器类型
- applicative:直接对两个容器直接操作
响应式编程
- 异步/离散的函数式编程
- 数据流
- 操作符:数据从管道一端流入,操作符构成数据管道,管道流出数据(合并、过滤、转化、异常处理、多播)
特点
- 观察者模式:订阅使数据改变
- 迭代器模式:数据会持续推送
- promise(数据持续来)/everntarget(取消订阅会进行向上传导) 超集
- monad
领域特定语言DSL
语言运行
字符串从 词法解析器-语法解析器-遍历(执行、转化成另外的语言)