编程范式 | 青训营笔记

107 阅读2分钟

一、编程范式

1.定义

一类典型的编程风格,是指从事软件工程的一类典型的风格(可以对照方法学)。

2.面向过程式编程

(1)自顶向下\

如:一个模块中含有一个主函数,这个主函数可以调用其他的子函数。 自顶向下.png

(2)结构化编程

作用:替代传统的go...to,改善编程的质量、开发时间。 结构化编程.png

(3)问题\

数据与算法关联弱:函数和数据没有直观的体现,随着程序的规模变大,变得难以理解。 不利于修改和扩充:没有封装
不利于代码重用:没有抽取类似功能的函数,因为大量的变量与函数关系错综复杂很难抽离。

3. 面向对象编程

面向对象编程是一种编程模式,将需用到的数据类型、方法定义为类,涉及数据封装、继承、多态等 面向对象编程\

(1)封装:关联数据与算法
(2)继承:无需重写的情况下进行功能扩充
(3)多态:不同的结构可以进行接口共享,进而达到函数复用
(4)原则:
•单一职责原则SRP(Single Responsibility Principle)
•开放封闭原则OCP(Open-Close Principle)
•里式替换原则LSP(theLiskovSubstitution Principle LSP)
•依赖倒置原则DIP(the Dependency Inversion Principle DIP)
•接口分离原则ISP(the Interface Segregation Principle ISP)
(5)问题:引用问题,我们只需要其中的一个函数,但是我们引用的过程中,把所有的函数都引入进来。

4. 函数式编程

(1)定义:"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。
(2)优点:
·可缓存
·可移植
·可测试
·可推理
·可并行
(3)函数式编程_Functor

可以当做容器的类型,类型支持对容器内元素进行操作
常见的functor:Array (Iterable).map,Promise.then

(4)函数式编程_Monad

可以去除嵌套容器的容器类型
常见monad:Array.flatMapPromise.then

(5)函数式编程_Applicative

函数式编程.png

(4)问题: 由于是函数式编程,在代码的运行过程中,会产生许多的变量来占用内存,这也是函数式编程自身最大的问题所在。

5. 响应式编程

(1)observable\

观察者模式、迭代器模式、promise/eventarget超集*
发布者--推送数据-->观察者
发布者<--发布--观察者

image.png (2) 操作符

操作符字体.png

进入管道的数据---操作符构成数据管道-->流出管道的数据去除嵌套的Observable

代码.png (3)monard
去除嵌套的Observable

observable.png