附录术语表
本术语表收录了《软件设计之美》知识体系中的核心术语,按主题分类排列。每个术语包含中文名、英文名、简要定义及相关章节链接,便于快速查阅与系统学习。
一、设计基础
| 术语 | 英文名 | 定义 | 相关章节 |
|---|---|---|---|
| 模型 | Model | 软件的骨架,定义软件本质属性的核心抽象结构 | 01-设计认知篇 |
| 规范 | Norm | 限定需求实现方式的约束规则,确保设计一致性 | 01-设计认知篇 |
| 关注点分离 | Separation of Concerns | 将不同维度的关注点拆分,粒度越小越好 | 01-设计认知篇 |
| 可测试性 | Testability | 软件模块在开发阶段能够被独立测试的容易程度 | 01-设计认知篇 |
| 高内聚低耦合 | High Cohesion, Low Coupling | 对模型的核心要求,好的模型能有效隐藏细节 | 01-设计认知篇 |
| 执行质量 | Execution Qualities | 运行时可观察的非功能性需求,如吞吐、延迟、安全 | 01-设计认知篇 |
| 演化质量 | Evolution Qualities | 内含于软件结构的非功能性需求,如可测试性、可维护性 | 01-设计认知篇 |
二、编程语言
| 术语 | 英文名 | 定义 | 相关章节 |
|---|---|---|---|
| 运行时 | Runtime | 程序设计语言的实现部分,支撑程序运行的环境 | 03-编程语言篇 |
| 语法糖 | Syntactic Sugar | 为方便程序员使用的语法,对语言功能无实质影响 | 03-编程语言篇 |
| 图灵完备 | Turing Complete | 语言的数据操作规则能实现图灵机的全部功能 | 03-编程语言篇 |
| 一等公民 | First-class Citizen | 可按需创建、存储、传参、返回的程序元素 | 04-编程范式篇 |
| 领域特定语言 | Domain Specific Language, DSL | 针对特定领域设计的程序设计语言 | 03-编程语言篇 |
| 内部 DSL | Internal DSL | 使用宿主语言语法表达的 DSL,如 Java Config、Rails API | 03-编程语言篇 |
| 外部 DSL | External DSL | 使用独立语法表达的 DSL,如 SQL、正则表达式 | 03-编程语言篇 |
三、编程范式
| 术语 | 英文名 | 定义 | 相关章节 |
|---|---|---|---|
| 编程范式 | Programming Paradigm | 程序的编写模式,决定可用的设计元素与约束 | 04-编程范式篇 |
| 结构化编程 | Structured Programming | 以顺序、选择、循环三种基本结构构建程序的范式 | 04-编程范式篇 |
| 面向对象编程 | Object-Oriented Programming, OOP | 以对象为核心,通过封装、继承、多态组织代码的范式 | 04-编程范式篇 |
| 函数式编程 | Functional Programming, FP | 以函数为核心,强调不变性与组合性的编程范式 | 04-编程范式篇 |
| Lambda | Lambda | 匿名函数,函数式编程中的核心表达方式 | 04-编程范式篇 |
| Monad | Monad | 函数式编程中处理上下文组合的核心概念 | 04-编程范式篇 |
| Mixin | Mixin | Ruby 的代码复用机制,模块可被 include 到类中 | 04-编程范式篇 |
| Trait | Trait | Scala 的代码复用机制,类似 Ruby 的 Mixin | 04-编程范式篇 |
| 面向组合编程 | Composition-Oriented Programming | 类由多个小模块组合而成,每个模块对应一个关注点 | 04-编程范式篇 |
| 迪米特法则 | Law of Demeter | 最少知识原则,一个对象不应知道太多其他对象的内部结构 | 04-编程范式篇 |
| Goto 是有害的 | Go To Statement Considered Harmful | Dijkstra 1968 年的文章,引发结构化编程革命 | 04-编程范式篇 |
四、设计原则(SOLID)
| 术语 | 英文名 | 定义 | 相关章节 |
|---|---|---|---|
| 单一职责原则 | Single Responsibility Principle, SRP | 一个模块对一类且仅对一类行为者负责 | 05-设计原则篇 |
| 开放封闭原则 | Open-Closed Principle, OCP | 对扩展开放,对修改封闭 | 05-设计原则篇 |
| Liskov 替换原则 | Liskov Substitution Principle, LSP | 子类型必须能够替换其父类型 | 05-设计原则篇 |
| 接口隔离原则 | Interface Segregation Principle, ISP | 不应让使用者依赖用不到的方法 | 05-设计原则篇 |
| 依赖倒置原则 | Dependency Inversion Principle, DIP | 高层不应依赖底层,二者都应依赖抽象 | 05-设计原则篇 |
| IS-A | IS-A | 继承关系的判定,基于行为一致性而非直觉概念 | 05-设计原则篇 |
| RTTI | Runtime Type Identification | 运行时类型识别,instanceof 的使用通常意味着违反 LSP | 05-设计原则篇 |
五、设计模式
| 术语 | 英文名 | 定义 | 相关章节 |
|---|---|---|---|
| 设计模式 | Design Pattern | 针对特定上下文中反复出现问题的标准解决方案 | 06-设计模式篇 |
| 简单设计 | Simple Design | Kent Beck 四原则:通过测试、揭示意图、消除重复、最少元素 | 06-设计模式篇 |
| DRY | Don't Repeat Yourself | 不要重复,消除重复是设计的初衷之一 | 06-设计模式篇 |
| 策略模式 | Strategy Pattern | 将算法族封装,使算法可独立变化 | 06-设计模式篇 |
六、领域驱动设计(DDD)
| 术语 | 英文名 | 定义 | 相关章节 |
|---|---|---|---|
| 领域驱动设计 | Domain-Driven Design, DDD | 从业务出发的设计方法,核心是通用语言和模型驱动设计 | 07-领域驱动设计篇 |
| 通用语言 | Ubiquitous Language | 业务与开发之间共有的语言,包含概念与操作 | 07-领域驱动设计篇 |
| 限界上下文 | Bounded Context | DDD 战略设计中显式的模型边界,边界内概念有统一含义 | 07-领域驱动设计篇 |
| 模型驱动设计 | Model-Driven Design | DDD 的核心方法,通过建立模型来驱动设计 | 07-领域驱动设计篇 |
| 实体 | Entity | DDD 中有唯一标识的领域对象,生命周期内有连续性 | 07-领域驱动设计篇 |
| 值对象 | Value Object | DDD 中无唯一标识、由属性定义、不可变的领域对象 | 07-领域驱动设计篇 |
| 聚合 | Aggregate | DDD 中一组相关实体的一致性边界,通过聚合根作为唯一入口 | 07-领域驱动设计篇 |
| 聚合根 | Aggregate Root | 聚合的入口实体,外部只能通过聚合根访问聚合内部的实体 | 07-领域驱动设计篇 |
| 领域服务 | Domain Service | 不属于任何实体或值对象的业务逻辑,承载跨实体的操作 | 07-领域驱动设计篇 |
| 领域事件 | Domain Event | 领域中发生的有业务意义的事件,用于聚合间的异步通信 | 07-领域驱动设计篇 |
| 资源库 | Repository | DDD 中持久化的抽象接口,面向领域而非数据库 | 07-领域驱动设计篇 |
| 防腐层 | Anti-Corruption Layer | DDD 上下文映射中的关键模式,隔离外部模型对内部领域模型的侵蚀 | 07-领域驱动设计篇 |
七、架构模式
| 术语 | 英文名 | 定义 | 相关章节 |
|---|---|---|---|
| 六边形架构 | Hexagonal Architecture | 端口与适配器架构,应用核心不依赖任何外部技术 | 09-扩展补充篇 |
| 端口 | Port | 六边形架构中应用核心定义的接口 | 09-扩展补充篇 |
| 适配器 | Adapter | 六边形架构中的技术对接层,实现端口接口的具体技术方案 | 09-扩展补充篇 |
| CQRS | Command Query Responsibility Segregation | 命令查询职责分离,写模型与读模型独立设计 | 09-扩展补充篇 |
| 事件溯源 | Event Sourcing | 不存储当前状态,而是存储所有改变状态的事件 | 09-扩展补充篇 |
| 响应式编程 | Reactive Programming | 面向数据流和变化传播的编程范式 | 09-扩展补充篇 |
| 回压 | Backpressure | 响应式编程中消费者控制数据流速的机制,防止被数据淹没 | 09-扩展补充篇 |
八、并发模型
| 术语 | 英文名 | 定义 | 相关章节 |
|---|---|---|---|
| Actor 模型 | Actor Model | 一种并发模型,每个 Actor 有独立状态,通过异步消息通信 | 09-扩展补充篇 |
| CSP 模型 | Communicating Sequential Processes | 通过通道传递数据的并发模型,Go 语言采用此模型 | 09-扩展补充篇 |
九、依赖管理
| 术语 | 英文名 | 定义 | 相关章节 |
|---|---|---|---|
| 依赖注入 | Dependency Injection, DI | 将对象创建从业务代码中分离,由容器统一管理 | 02-设计分析篇 |
| 约定优于配置 | Convention over Configuration | Rails 的核心设计理念,无需配置按缺省风格即可完成基本功能 | 02-设计分析篇 |
十、其他
| 术语 | 英文名 | 定义 | 相关章节 |
|---|---|---|---|
| 虚拟文件系统 | Virtual File System, VFS | Linux 中的文件系统接口,C 语言用函数指针实现多态 | 04-编程范式篇 |
术语索引(按字母排序)
A-C
- Actor 模型 (Actor Model)
- 适配器 (Adapter)
- 防腐层 (Anti-Corruption Layer)
- 聚合 (Aggregate)
- 聚合根 (Aggregate Root)
- 回压 (Backpressure)
- 限界上下文 (Bounded Context)
- 命令查询职责分离 (CQRS)
- CSP 模型 (Communicating Sequential Processes)
- 约定优于配置 (Convention over Configuration)
D-G
- 依赖注入 (Dependency Injection, DI)
- 依赖倒置原则 (Dependency Inversion Principle, DIP)
- 领域驱动设计 (Domain-Driven Design, DDD)
- 领域事件 (Domain Event)
- 领域服务 (Domain Service)
- 领域特定语言 (Domain Specific Language, DSL)
- 不要重复 (Don't Repeat Yourself, DRY)
- 实体 (Entity)
- 事件溯源 (Event Sourcing)
- 演化质量 (Evolution Qualities)
- 执行质量 (Execution Qualities)
- 一等公民 (First-class Citizen)
- Goto 是有害的 (Go To Statement Considered Harmful)
H-L
- 六边形架构 (Hexagonal Architecture)
- 高内聚低耦合 (High Cohesion, Low Coupling)
- IS-A
- 接口隔离原则 (Interface Segregation Principle, ISP)
- 内部 DSL (Internal DSL)
- 外部 DSL (External DSL)
- Liskov 替换原则 (Liskov Substitution Principle, LSP)
- Lambda
- 迪米特法则 (Law of Demeter)
M-O
- 模型 (Model)
- 模型驱动设计 (Model-Driven Design)
- Monad
- Mixin
- 规范 (Norm)
- 开放封闭原则 (Open-Closed Principle, OCP)
- 面向组合编程 (Composition-Oriented Programming)
P-S
- 端口 (Port)
- 编程范式 (Programming Paradigm)
- 资源库 (Repository)
- 响应式编程 (Reactive Programming)
- 运行时类型识别 (RTTI)
- 运行时 (Runtime)
- 单一职责原则 (Single Responsibility Principle, SRP)
- 关注点分离 (Separation of Concerns)
- 语法糖 (Syntactic Sugar)
- 简单设计 (Simple Design)
- 策略模式 (Strategy Pattern)
T-Z
- 可测试性 (Testability)
- Trait
- 图灵完备 (Turing Complete)
- 通用语言 (Ubiquitous Language)
- 值对象 (Value Object)
- 虚拟文件系统 (Virtual File System, VFS)