用途:为有意识的深模块设计提供统一语言与原则,用于设计或重构代码时。目标是给调用方带来杠杆、给维护者带来局部性、给所有人带来可测试性。
主要能力:定义并统一使用一组术语。模块指任何有接口和实现的东西,刻意与规模无关,可为函数、类、包或跨层切片。接口指调用方正确使用模块所需知道的一切,包括类型签名、不变量、顺序约束、错误模式、必需配置和性能特征。实现指模块内部代码。深度指接口处的杠杆,即调用方或测试每学习一单位接口能触发的行为量。接缝指可在不编辑该处的情况下改变行为的位置,即模块接口所在之处。适配器指在接缝处满足接口的具体事物。杠杆是调用方从深度获得的能力,局部性是维护者从深度获得的集中变更与验证。
设计原则:深度是接口属性而非实现属性;深模块内部可由小而可替换的部分组成,但不属于接口。删除测试:想象删除该模块,若复杂度消失则是直通,若复杂度在 N 个调用方重现则值得保留。接口即测试面,调用方与测试跨越同一接缝。一个适配器意味着假设接缝,两个适配器才是真实接缝,不要引入没有实际变化的接缝。
可测试性:接受依赖而非创建依赖,例如 processOrder(order, paymentGateway);返回结果而非产生副作用,例如 calculateDiscount(cart): Discount;保持小表面积,方法越少测试越少,参数越少测试设置越简单。
关系:一个模块恰好有一个接口;深度是模块相对其接口的属性;接缝是模块接口所在之处;适配器位于接缝并满足接口;深度为调用方产生杠杆,为维护者产生局部性。
限制与说明:资料未提供安装命令、平台、收费或价格信息。资料明确拒绝将深度视为实现行数与接口行数之比,也拒绝把接口窄化为 TypeScript 关键字或类公开方法,并建议避免使用“边界”一词。进一步内容指向 DEEPENING.md 与 DESIGN-IT-TWICE.md。