用途:在设计和重构代码时,用统一词汇讨论模块、接口、实现、深度、seam 与 adapter,帮助把大量行为藏在小型接口之后,并让调用方与测试穿过同一个接口。
主要能力:给出术语表(Module、Interface、Implementation、Depth、Seam、Adapter、Leverage、Locality),区分深模块与浅模块,提供设计接口时可自问的问题(能否减少方法、简化参数、隐藏更多复杂度),并列出原则:深度属于接口而非实现;删除测试(删掉模块若复杂度消失则为直通,若在 N 个调用点重现则值得保留);接口即测试面;一个 adapter 只是线索,两个才更有说服力,不要仅为假想间接性引入 seam。还给出可测试性做法:接受依赖而非自行创建(如 processOrder(order, paymentGateway) 对 processOrder 内 new StripeGateway())、返回结果而非产生副作用(calculateDiscount 对 applyDiscount)、缩小表面积。
使用方式:资料未提供安装命令或具体调用步骤,仅说明可配合 DEEPENING.md 处理加深模块簇(依赖类别、seam 纪律、替换而非分层测试),以及 DESIGN-IT-TWICE.md 用并行子代理从多个不同角度设计接口,再按深度、局部性与 seam 位置比较。
适用场景:需要设计或改进模块接口、寻找加深机会、决定 seam 位置、让代码更可测试时。
限制:资料未提供收费、价格、平台支持或效果保证信息;术语取舍上不采用 Ousterhout 以实现行数比接口行数衡量深度的框架,也不把 Interface 仅理解为 TypeScript 关键字或类公开方法。