一、编程范式
1.定义
一类典型的编程风格,是指从事软件工程的一类典型的风格(可以对照方法学)。
2.面向过程式编程
(1)自顶向下\
如:一个模块中含有一个主函数,这个主函数可以调用其他的子函数。
(2)结构化编程
作用:替代传统的go...to,改善编程的质量、开发时间。
(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
(4)问题: 由于是函数式编程,在代码的运行过程中,会产生许多的变量来占用内存,这也是函数式编程自身最大的问题所在。
5. 响应式编程
(1)observable\
观察者模式、迭代器模式、promise/eventarget超集*
发布者--推送数据-->观察者
发布者<--发布--观察者
(2) 操作符
进入管道的数据---操作符构成数据管道-->流出管道的数据去除嵌套的Observable
(3)monard
去除嵌套的Observable