用途:为代码设计与重构提供统一语言和原则,目标是让调用方获得杠杆(leverage)、维护者获得局部性(locality)、所有人获得可测试性。
核心概念:模块(Module)指任何具有接口与实现的东西,刻意不限定规模,可以是函数、类、包或跨层切片;接口(Interface)指调用方正确使用模块所需知道的一切,包括类型签名、不变量、顺序约束、错误模式、必需配置和性能特征;实现(Implementation)指模块内部代码;深度(Depth)指接口处的杠杆,即调用方或测试每学习一单位接口能触发的行为量;接缝(Seam)指无需编辑该处即可改变行为的位置;适配器(Adapter)指在接缝处满足接口的具体事物。
主要能力:区分深模块与浅模块,深模块是小接口加大量实现,浅模块是大接口加少量实现;提供设计接口时的自问:能否减少方法数量、简化参数、隐藏更多复杂度;给出删除测试:想象删除该模块,若复杂度消失则是直通,若复杂度在 N 个调用方重现则值得保留;强调接口即测试面,调用方与测试跨越同一接缝;一个适配器只是假设接缝,两个适配器才是真实接缝。
使用方式:在设计与重构中统一使用上述术语,避免用 component、service、API、boundary 替代;设计可测试性时接受依赖而非创建依赖,返回结果而非产生副作用,保持小表面积。
适用场景:设计或改进模块接口、寻找深化机会、决定接缝位置、评估模块深度与可测试性。
限制:资料未提供具体安装命令、代码示例之外的完整实现细节、收费或平台信息;深化集群与替代接口设计分别参见 DEEPENING.md 和 DESIGN-IT-TWICE.md。