1 复杂性与设计原则 1.1 KISS 1.1.1 单源一致性原则 1.1.2 可视化设计 1.1.3 简单性原则 1.2 复杂性封装 1.2.1 复用与依赖原则 1.2.2 抽象与隔离原则 1.2.3 透明可测试原则 1.3 复杂性来源 1.3.1 不确定的未来 1.3.2 吸积与持续迭代 1.3.3 复杂性定义 1.3.4 懒惰与隔阂 1.4 架构思维 1.4.1 战术与战略 1.4.2 持续设计 1.4.3 架构师 1.4.4 架构的推导 1.5 模块设计 2 整洁与重构 2.1 代码重构 2.1.1 函数重构 2.1.2 对象重构 2.1.3 数据重构 2.1.4 条件选择重构 2.1.4.1 if else 2.1.4.2 基于策略与工厂模式的重构 2.1.5 概括关系重构 2.1.6 过程重构 2.2 命名与注释 2.2.1 注释 2.2.1.1 代码的自解释性 2.2.1.2 函数注释 2.2.2 英文替换 2.3 异常处理 2.4 整洁代码 2.4.1 代码的味道 2.4.1.1 代码的形状 2.4.2 异常处理 2.4.3 重复代码 2.5 重构的步骤 2.5.1 Code Review 2.5.2 修改现有的代码 3 架构设计方式 3.1 UML 3.1.1 PlantUML 3.1.2 时序图 3.1.3 类关系 3.1.4 类图 3.2 WebAPI 3.2.1 OpenAPI 3.2.2 演化与变迁 3.2.2.1 API 的过去,现在与未来 3.2.2.2 WebAPI 风格变迁 3.3 中台与平台 3.3.1 业务与架构 3.3.1.1 业务定义 3.3.1.2 业务挑战 3.3.1.3 业务模型 3.3.1.4 中台架构 3.3.2 中台红与黑 3.3.2.1 中台的缺陷 3.3.2.2 中台的诉求 3.3.3 大厂中台 3.3.3.1 阿里 3.3.4 开放平台 3.4 技术负债 3.5 文本绘图 3.5.1 Flowchart 3.6 架构图 3.6.1 C4 3.6.2 架构图分类 3.7 架构域 3.8 演进式架构 4 模式与风格 4.1 CQRS 4.1.1 EventSourcing 4.1.2 Spring 与 CQRS 4.2 CRUD 4.3 EDA 4.3.1 事件溯源 4.4 REST 4.4.1 Microsoft API 设计标准 4.4.2 Paypal API 设计标准 4.4.3 RESTful 接口 4.5 UDLMA 4.5.1 RARF 4.5.1.1 AARF.en 4.5.1.2 AARF 4.5.1.3 RARF.en 4.5.1.4 RARF 4.5.1.5 类 Redux 的代码组织 4.5.2 扩展 4.5.2.1 反应式 4.5.2.2 扩展点 4.6 事务脚本 4.6.1 事务脚本 4.6.2 活动记录 4.6.3 表模块 4.7 分层架构 4.7.1 COLA 4.7.2 DOMA 4.7.3 六边形架构 4.7.4 整洁架构 4.7.4.1 Go 的整洁架构实践 4.7.5 洋葱架构 4.8 架构框架 4.8.1 DODAF 4.8.2 ITSA 4.8.3 TOGAF 4.8.4 Zachman 4.9 领域驱动设计 4.9.1 代码架构 4.9.1.1 分层架构 4.9.2 基础概念 4.9.2.1 名词与术语 4.9.2.2 数据视图 4.9.2.3 领域事件 4.9.2.4 领域服务 4.9.3 应用案例 4.9.3.1 ContextMapper 4.9.3.1.1 会员系统 DSL 描述 4.9.3.2 银行转账 4.9.4 设计与建模 4.9.4.1 Domain Driven Design Starter Modelling Process 4.9.4.2 用例分析与关系推导 4.9.4.3 领域划分 4.9.4.4 领域协作 5 服务化架构 5.1 SOA 5.1.1 ESB 5.1.2 服务视图 5.2 中间件 5.3 云原生 5.3.1 Distributionless 5.3.2 Serverless 5.4 单体架构 5.4.1 单体分层架构 5.5 微服务 5.5.1 应用治理 5.5.2 服务拆分 5.5.3 框架比较 6 GUI 应用程序架构 6.1 单向数据流 6.1.1 Clean Architecture 6.1.2 Flux 6.2 双向数据流 6.2.1 MVC 6.2.2 MVP 6.2.3 MVVM 6.3 组件化 6.3.1 Atomic Design