编程范式|青训营笔记

70 阅读2分钟

编程范式 1,前端主要语言为JavaScript 2,融合多种范式,灵活度高

C面向过程,C++面向对象,Lisp:函数式语言代表:与机器无关,列表:代码即数据;闭包 JavaScript:基于原型和头等函数的多范式语言 过程式,面向对象,函数式,响应式

程序语言特性:是否允许副作用,操作的执行顺序,代码组织 状态管理,语法和词法

编程范式:命令式:1,面向过程2,面向对象 声明式:1,函数式2,响应式

过程式编程:自顶向下→程序→模块→函数→函数,语句 ↓ 变量→数据结构 结构化编程:顺序结构,选择结构,循环结构

面向过程的问题: 1,数据与算法关联弱 2,不利于修改和扩充 3,不利于代码重用

面向对象:把数据封装到类中 1,封装2,继承3,多态,4,依赖注入*

继承:无需重写的情况下进行功能的扩充

多态:不同的结构可以进行接口共享,进而达到函数复用

依赖注入:去除代码耦合

面向对象:五原则:1,单一职责原则:一个类功能要单一 2,开放封闭原则:扩展性开发,更改性封闭 3,里式替换原则:子类可替换父类,且可出现再父类应出现的任何地方 4,依赖倒置原则:具体依赖抽象,上层依赖下层 5,接口分离原则:任何时刻依赖靠接口去分,而不是具体实现

面向对象的问题:附带所有它需要隐含的环境,难以细分

函数式编程:函数是“第一等公民” 纯函数/无副作用 ,高阶函数/闭包 (减少变化)

函数式编程优势:可缓存,可移植,可测试,可推理,可并行

响应式编程:异步/离散的函数式编程 数据流 操作符:过滤,合并,转化,高阶:异常处理,多播 订阅 ← 发布者 观察者 → 推送数据 Obeservable:观察者模式,迭代器模式 EventTarget超集:取消订阅会向上传导