编程范式
形成过程:机器语言>>汇编语言>>高级语言
c/c++:中级语言>>过程语言代表
1.对地址,字节,位直接操作
2.代码和数据分离倡导结构化编程
3.功能齐全,数据结构和控制逻辑多样化
4.可移植能力强
c++增加了对类的操作lisp:函数式语言的代表
js:多范式>>过程性,面向对象,函数式,响应式
程序语言特性:是否副作用,操作执行顺序,代码管理,语法和词法
又可分为
1.命令式>>面向对象,面向过程
2.声明式>>函数式,响应式
面向过程的问题:1.数据和算法关联弱 2.不利于代码的修改和扩充 3.不利于代码的重用
面向对象的优点:封装,继承,多态,依赖注入
1.封装:关联数据和算法 2.继承:无需重写的情况下进行功能扩充 3.多态:不同结构可以进行接口共享>>函数复用 4.依赖注入:去除代码耦合度(函数使用时需要外部数据写入)
*面向对象的五大原则:
单一职责:用法应当单一
开放封闭:扩展性开放,更改性封闭
里式替换:对继承而言的,继承是为了实现代码重用,也就是为了共享方法,那么共享的父类方法就应该保持不变,不能被子类重新定义。子类只能通过新添加方法来扩展功能
依赖倒置:设计代码结构时,高层模块不应该依赖低层模块,二者都应该依赖其抽象
接口分离:一个类要给多个客户使用,那么可以为每个客户创建一个接口,然后这个类实现所有的接口;而不要只创建一个接口,其中包含所有客户类需要的方法,然后这个类实现这个接口
面向对象的问题:总是附带所有它所要的隐含环境
函数式编程:无副作用,闭包,高阶函数
聚合转发>>代码更加简洁
优点:可 缓(存),可(移)植,可(测试),(可推)理,可并(行)