Skip to content

面相过程 Procedural Programming

面向过程编程是一种编程范式,它强调程序执行的过程和步骤,在这种范式中, 程序是由一系列过程(或子程序,函数)组成的,每个过程完成特定的任务, 面向过程编程的主要目的是通过模块化来组织代码,使得代码更加清晰和易于维护

特点包括:

  • 模块化: 将程序分解成小的可重用的功能块
  • 顺序执行: 通常按照代码的顺序执行
  • 变量作用域: 定义了变量在何处可用
  • 数据和行为分离: 数据和对数据的操作通常是分开的
js
// 举个例子: 造车

// 车的属性
var width = 10;
var length = 25;
var height = 15;
var color = '#ff0000';

// 造车的过程
function makeCar() {
  makeLayout();
  makeEnginer();
  makeTires();
  putParts();
}

// 制造车架
function makeLayout() {}

// 制造引擎
function makeEnginer() {}

// 制造轮胎
function makeTires() {}

// 组装
function putParts() {}

面向对象 Object-Oriented Programming(OOP)

面向对象编程是一种编程范式, 它使用"对象"来设计软件, 对象是数据和处理这些数据的方法的封装体, OOP的核心思想 是将现实世界中的事物抽象为对象, 并通过类来描述这些对象的属性和行为

什么是类?

类是一类事物的抽象(比如: 人类)

什么是对象?

对象是一个具体的实际例子(比如: 小明)

特点包括:

  • 封装: 隐藏对象的内部状态和实现细节, 只暴露必要的接口给外部
  • 继承: 子类可以从父类那里继承属性和方法, 减少代码重复
  • 多态: 同一接口可以有多种不同的实现方式(这个特点在 JS 这样的弱类型语言中无法体现, 但是在 TS 中可以)
  • 抽象: 定义接口或抽象类, 不提供具体实现, 由子类去完成
js
// 举个例子: 造车

// 1.首先将 车 这个概念做一个抽象, 有哪些属性和行为
class Car {
  width: 10;
  length: 25;
  height: 15;

  constructor() {
    makeLayout();
    makeEnginer();
    makeTires();
    putParts();
  }

  // 制造车架
  makeLayout() {}

  // 制造引擎
  makeEnginer() {}

  // 制造轮胎
  makeTires() {}

  // 组装
  putParts() {}
}


// 2.在使用的时候不需要关心, 具体的实现, 只需要使用封装好的方法即可
function makeCar() {
  var car = new Car();
  return car;
}

扩展:函数式编程 Functional Programming

函数式编程是一种编程范式, 它把计算过程视为一系列函数的组合, 函数式编程强调函数的纯度, 即函数的输出只依赖于输入参数, 没有副作用

特点包括:

  • 不可变性: 数据一旦创建就不能被改变
  • 纯函数: 函数的结果只取决于输入参数, 且没有副作用
  • 递归: 经常使用递归来解决问题而不是循环
  • 高阶函数: 函数可以接受其他函数作为参数, 也可以返回函数作为结果

Released under the MIT License.