编程规范 | 青训营笔记

84 阅读3分钟

一、编程语言

(1)机器语言、汇编语言、中级语言、高级语言。
(2)C/C++

可对位、字节、地址直接操作

代码和数据分离倡导结构化编程

功能齐全:数据类型和控制逻辑的多样化

可移植能力强

C++面向对象语言代表

C with Classes

继承

权限控制

虚函数

多态

(3)lisp

Lisp:函数式语言代表

与机器无关列表:代码即数据

闭包

(4)JavaScript

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

过程式

面向对象

函数式

响应式

二、编程的规范

什么是编程规范?

(1)程序语言特性:是否允许副作用、操作的执行顺序、代码组织、状态管理、语法和词法
(2)常见的编程规范:命令式和声明式

命令式:面向过程、面向对象

声明式:函数式、响应式

(3)过程式编程:自顶向下、结构化编程

自顶向下:程序-模块-变量-数据结构

程序-模块-函数-函数-语句

结构化编程:顺序结构、选择结构、循环结构。

(4)JS中的面向过程

数据和算法

(5)面向过程问题

数据与算法关联弱

不利于修改和扩充

不利于代码重用

(6)面向对象编程

封装:关联数据与算法

继承无需重写的情况下进行功能扩充

多态:不同的结构可以进行接口共享,进而达到函数复用

依赖注入:去除代码耦合

(7)面向对象编程的五大原则

单一职责原则SRP

开放式封闭原则OCP

里式替换原则LSSP

依赖倒置原则DIP

接口分离原则ISP

(8)面向对象问题:面向对象编程语言的问题在于,它总是附带着所有需要的隐含环境。

函数式编程:函数是“第一公民”

纯函数/无副作用

高阶函数/闭包

函数式编程 First Class Function:聚合转发

Pure Function:可缓存、可移植、可测试、可推理、可并行

Currying:闭包、参数重复、之前参数存入闭包

Composition:手动组合

Functor:可以当容器的类型,类型支持对容器内元素进行操作

Monad:可以去除嵌套容器类型

Applicative:直接对两个容器进行直接操作

(9)响应式编程

异步/离散的函数式编程

数据流

操作符

过滤

合并

转化

高阶

Observable:观察者模式、迭代器模式、Promise/EventTarget超集

操作符:合并、过滤、转化、异常处理、多播

Monad:去掉嵌套的Observable

三、领域特定语言

Lexer:注释、关键字、操作符、空格、字符串、变量

Parser:上下文无关语法规则

推导式:表示非终结符到(非终结符或终结符)的关系

终结符:构成句子的毒实际内容,可以简单理解为词法分析的token

非终结符:符号或变量的有限集合。他们表示句子中不同类型的短语或子句

Parser_LR:从左到右检查 ,从右到左构建语法树

Tools、visitors。