用途:在设计和重构代码时,用统一语言描述模块。资料强调使用固定术语,不要用 component、service、API、boundary 替代。核心概念包括:模块(Module,任何有接口与实现的东西,尺度无关)、接口(Interface,调用方正确使用所需知道的一切,含类型签名、不变量、顺序约束、错误模式、必要配置、性能特征)、实现(Implementation)、深度(Depth,接口处的杠杆:每单位需学习的接口能触发的行为量)、接缝(Seam,可改行为而无需就地编辑之处)、适配器(Adapter,在接缝处满足接口的具体实现)、杠杆(Leverage)与局部性(Locality)。设计时自问:能否减少方法数、简化参数、把更多复杂性藏到内部。原则:深度是接口属性而非实现属性;删除测试(删掉模块若复杂性消失则是直通,若在 N 个调用方重现则值得保留);接口即测试面;一个适配器只是假设接缝,两个才是真接缝。可测试性建议:接受依赖而非创建依赖、返回结果而非产生副作用、缩小表面积。资料还给出 DEEPENING.md 与 DESIGN-IT-TWICE.md 两个进一步阅读方向。限制:官方原文细节暂未提供,未提及收费、平台或版本信息。
codebase-design
设计与创作
更新于 10-16 01:39