知识卡片
契约谱系与Stamp Coupling反模式
内容
契约存在一条从严到松的光谱:RMI这类严格契约要求名称、类型、顺序完全匹配,改一处就四处遭殃;REST、GraphQL等松散契约建模资源而非过程,新增字段不会打破已有调用方。常见反模式是Stamp Coupling——担心以后用得上,就把整个实体(如完整Customer对象)塞进契约,哪怕当前只需一个字段,结果该实体任何无关字段变动都会意外破坏契约。契约应只暴露”当下需要知道”的信息。
参考来源
- 位置:《演进式架构(原书第2版)》第5章《演进式架构拓扑》「契约」严格/宽松契约及Stamp Coupling小节(源文件:_epub-src/EPUB/xhtml/chapter09_0001.xhtml)
- 结论依据:原文明确RMI等严格契约要求名称类型顺序匹配,并将预先塞入完整Wishlist等无关信息的做法定义为Stamp Coupling反模式,直接支持卡片论点。
- 原始内容:"严格的契约要求遵守名称、类型、顺序和所有其他细节,不留任何歧义。软件中最严格的契约类型是远程方法调用……一种常见的可能不少架构师都陷入的反模式是假设Wishlist可能最终需要所有其他部分,所以从一开始就在契约中包含这些信息。这是Stamp Coupling"