1 INTRODUCTION 2 整洁与重构 2.1 命名与注释 2.1.1 命名 2.1.1.1 命名的意义 2.1.1.2 命名规约 2.1.1.3 英文替换 2.1.2 注释 2.1.2.1 代码的自解释性 2.1.2.2 先写注释 2.1.2.3 函数注释 2.1.2.4 如何编写注释 2.2 整洁代码 2.2.1 代码的味道 2.2.1.1 代码的形状 2.2.2 异常处理 2.2.2.1 异常处理 2.2.3 重复代码 2.3 重构的技巧 2.3.1 函数重构 2.3.2 对象重构 2.3.3 数据重构 2.3.4 条件选择重构 2.3.4.1 if else 2.3.4.2 基于策略与工厂模式的重构 2.3.4.3 避免过度条件选择重构 2.3.5 概括关系重构 2.3.6 过程重构 2.4 重构的步骤 2.4.1 Code Review 2.4.2 修改现有的代码 3 复杂性与设计原则 3.1 模块与拆分 3.1.1 抽象 3.1.1.1 分层抽象 3.1.1.2 接口与抽象 3.1.1.3 深浅模块 3.1.2 模块划分 3.1.2.1 汇聚与去重 3.1.2.2 通用与专用 3.2 架构思维 3.2.1 战术与战略 3.2.2 抽象思维 3.2.3 持续设计 3.2.4 架构师 3.3 复杂性来源 3.3.1 不确定的未来 3.3.2 吸积与持续迭代 3.3.3 复杂性定义 3.3.4 懒惰与隔阂 3.4 复杂性封装 3.4.1 复用与依赖原则 3.4.2 抽象与隔离原则 3.4.3 透明可测试原则 3.5 KISS 3.5.1 单源一致性 3.5.2 可视化设计 3.5.3 注释与文档 3.5.4 简单性原则 3.5.4.1 案例:FitNess 3.5.4.2 案例:Istio 3.5.5 避免提早优化 3.6 编程语言的设计之道 3.6.1 Python 3.7 .more 3.7.1 怎么写 Bug 4 风格与模式 4.1 CQRS 4.1.1 EventSourcing 4.1.2 Spring 与 CQRS 4.2 CRUD 4.3 EDA 4.3.1 事件溯源 4.4 UDLMA 4.4.1 RARF 4.4.1.1 AARF.en 4.4.1.2 AARF 4.4.1.3 RARF.en 4.4.1.4 RARF 4.4.1.5 类 Redux 的代码组织 4.4.2 扩展 4.4.2.1 反应式 4.4.2.2 扩展点 4.5 Web API 4.5.1 API 生成 4.5.2 OpenAPI 4.5.3 REST 4.5.3.1 Microsoft API 设计标准 4.5.3.2 Paypal API 设计标准 4.5.3.3 RESTful 接口 4.5.4 演化与变迁 4.5.4.1 API 的过去,现在与未来 4.5.4.2 WebAPI 风格变迁 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.5 整洁架构 4.7.5.1 Go 的整洁架构实践 4.7.6 洋葱架构 4.8 架构框架 4.8.1 DODAF 4.8.2 ITSA 4.8.3 TOGAF 4.8.4 Zachman 5 架构设计方式 5.1 UML 5.1.1 PlantUML 5.1.2 时序图 5.1.3 类关系 5.1.4 类图 5.2 中台与平台 5.2.1 业务与架构 5.2.1.1 业务定义 5.2.1.2 业务挑战 5.2.1.3 业务模型 5.2.1.4 中台架构 5.2.2 中台红与黑 5.2.2.1 中台的缺陷 5.2.2.2 中台的诉求 5.2.3 大厂中台 5.2.3.1 阿里 5.2.4 开放平台 5.3 技术团队组织 5.3.1 管理模式 5.3.1.1 原子化管理 5.3.1.2 组织发展 5.3.2 组织架构 5.4 技术负债 5.5 架构图 5.5.1 C4 5.5.2 架构图分类 5.5.3 流程图 5.5.3.1 Flowchart 5.6 架构域与推导 5.6.1 业务模型推导 5.6.2 架构域划分 6 服务化架构 7 领域驱动设计 7.1 设计理念 7.2 基础概念 7.2.1 数据视图 7.2.2 聚合与聚合根 7.2.2.1 聚合与聚合根的设计 7.2.3 领域事件 7.2.4 领域对象 7.3 领域划分 7.3.1 事件风暴 7.3.2 提炼问题域 7.3.3 通用语言 7.3.4 限界上下文 7.4 分层架构 7.4.1 代码模型 7.4.2 层的划分 7.4.3 服务与数据协作 7.4.4 架构演化 7.4.5 领域事件 7.5 应用案例 7.5.1 ContextMapper 7.5.1.1 会员系统 DSL 描述 7.5.2 Domain Driven Design Starter Modelling Process 7.5.3 Modular Monolith with DDD 7.5.4 Sairyss Domain Driven Hexagonal 7.5.5 保险电商系统 7.5.6 数字钱包系统 7.5.6.1 代码设计 7.5.6.2 银行转账 8 GUI 应用程序架构 8.1 单向数据流 8.1.1 Clean Architecture 8.1.2 Flux 8.2 双向数据流 8.2.1 MVC 8.2.2 MVP 8.2.3 MVVM 8.3 组件化 8.3.1 Atomic Design