面向时空
面向时空编程,是要求开发者以空间结构管理和时间流程规划的姿态去理解软件开发的本质。空间结构回答"系统由哪些部分组成、它们如何被边界划分和治理",时间流程回答"这些部分如何随时间推移而交互、变化、衰退与演进"。形式化的时空模型见体系建构。
这套框架有两层诉求。一是兼容并解释已有的经典理论——把分层架构、依赖倒置、六边形架构、DDD、CAP 等杂乱的理论商品纳入时空框架而不产生矛盾,从一个更高更全面的维度看清它们的本质,减少实际选型时的选择困难。二是走到实践中去,把抽象原则落实成具体的工程动作,让理论真正可行。
设计的多层级视角
软件设计是从微观代码到宏观分布式架构的渐进过程,每个层级都有独特的核心矛盾和主导思想。理清这四层,等于拿到了本章节的阅读地图。
代码编写层的核心矛盾是逻辑清晰度与开发效率之间的取舍,主导思想是语义化与可读性,关注变量命名、函数设计、代码组织这些微观细节,好的代码应当像自然语言一样让读者迅速领会意图。具体实践见作用域与单进程结构。
程序设计层的核心矛盾是需求变更成本与初始开发复杂度之间的取舍,主导思想是解耦与复用。SOLID、设计模式、组合优于继承都在这一层发挥作用:一个类若需要频繁修改,说明耦合过高;多处出现相似逻辑,说明缺少合理抽象。这一层涉及组件耦合原则、容器、权衡与依赖管理。
系统架构层的核心矛盾是业务边界划分与团队协作成本之间的取舍,主导思想是边界与职责。如何让核心业务逻辑不被技术实现污染,是这一层最关键的决策——同一个"订单"对象,在销售域与物流域的定义可能完全不同,必须用边界来隔离这些差异。架构流派见架构演进。
分布式系统层的核心矛盾是不可靠网络、数据一致性与高可用性之间的取舍,主导思想是容错与伸缩。CAP 揭示了三选二的本质困境,BASE 提示有时应追求最终一致性而非强一致性。这一层跨越主机边界,对应网络域(待补充)。
阅读地图
本章节按空间层次组织成四个域,建议顺着"先看空间结构、再看结构之间的交互流程"的顺序阅读,从体系建构建立时空模型,再按需深入各域。
| 域 | 空间层次 | 关键主题 |
|---|---|---|
| 进程域 | 进程内 | 作用域、单进程结构、组件耦合 |
| 主机域 | 本机上 | 文件管理、微服务治理、数据与配置分离 |
| 网络域 | 主机间 | 分布式锁、通信代理 |
| 通用域 | 跨层横切 | 容器、权衡、依赖管理、腐化、架构演进 |