编程范式 | 青训营笔记

89 阅读1分钟

JavaScript

基于原型和头等函数的多范式语言

面向过程

例子

// 数据
export var car =
    meter:100,
    speed:10,
};

// 算法
export function advanceCar(meter){
    while (car meter){
    car.meter +car.speed;
    }
}

问题

数据与算法关联弱

不利于修改和扩充

不利于代码重用

面向对象

特点

封装 继承 多态 依赖注入

例子

class Car {
    meter = 100
    speed = 100
advance(meter){
    while (this.meter < meter){
        this.meter +this.speed;
    }
 }   
getspec(){
    return `meter:${this.meter};speed:${this.speed}`;
     }
 }
 
 
 function main(){
    var car new Car();
    car.advance(1000);
}

问题

面向对象编程语言的问题在于,它总是附带着所有 它需要的隐含环境。你想要一个香蕉,但得到的却 是一个大猩猩拿着香蕉,而且还有整个丛林。

函数式

特点

函数是“第一等公民

纯函数/无副作用

高阶函数/闭包

例子

function retirePerson(p){
    const retireAge =  60;
if (p.age > retireAge){
    return{
        ...P
        status:'retired',
        }
       } 
        return p;
 }

响应式

特点

异步/离散的函数式编程

数据流

操作符

过滤

合并

转化

高阶

例子

const fromEvent,map } = rxjs;
const clicks =  fromEvent(document,'click')
const positions =  clicks.pipe(
map(ev => ev.clientx),
map(clientx => ++clientx)
转化操作符
positions.subscribe(x => console.log(x));

总结

编程范式是编程学习的重要组成部分,可分为命令式、函数式(属于声明式)、面向对象等多种范式。js 是一种动态语言,它支持多种范式,具体选择哪种范式,根据业务需求和个人风格做选择。编程范式没有绝对的好坏之分,只有合适和不合适。

在学习编程范式时,可以先了解一下各种范式的基本概念和特点,然后通过实践来加深理解。例如,命令式编程是一种以计算机执行的命令为中心的编程方式,它的特点是易于理解和调试;函数式编程则是一种以函数为中心的编程方式,它的特点是代码简洁、可读性强、易于维护等;面向对象编程则是一种以对象为中心的编程方式,它的特点是代码复用性高、易于扩展等。