Engineering
代码库设计
设计深层模块的共享词汇。适用于设计或改进模块接口、寻找深化机会、决定接口位置、使代码更可测试或更易被 AI 导航时。
设计深层模块:在小接口背后隐藏大量行为,放置在清晰的接口处,可通过该接口进行测试。
模块(Module) —— 任何具有接口和实现的东西。
接口(Interface) —— 调用者正确使用模块所需知道的一切:类型签名,以及不变量、排序约束、错误模式、所需配置和性能特征。
实现(Implementation) —— 模块内部的内容,即代码本体。
深度(Depth) —— 接口的杠杆效应:调用者(或测试)每学习一个单位接口所能驱动的行为量。
接口处(Seam) —— 可以在不修改该位置的情况下改变行为的地方;模块接口所处的位置。
适配器(Adapter) —— 在接口处满足接口的具体实现。
杠杆(Leverage) —— 调用者从深度中获得的:每学习一个单位接口就能获得更多能力。
局部性(Locality) —— 维护者从深度中获得的:变更、Bug、知识和验证都集中在一个地方。
深层模块 = 小接口 + 大量实现。
浅层模块 = 大接口 + 少量实现(应避免)。
设计接口时,问自己:
好的接口让测试变得自然: