参考文献
把模式主张追溯到原始著作、案例与相关模式语言,区分来源证据和当前项目验证。
学习目标
- 能为一次模式选择建立从主张、引用坐标到当前验证的可追溯来源链
- 能区分原始来源、公开目录、出版社信息和项目实验各自支持与不支持的内容
- 能在来源过期、引用不精确或实验与文献不一致时记录修正、撤回和复核路径
为什么参考文献值得单独学习
↡需要被来源支持、并且可以被另一位评审者拆成具体证据检查的架构陈述。参考文献不是链接收藏夹,而是让每个 Source Claim 都能回答“谁说的、在哪一处、支持到什么范围、当前是否复核”。目录决定模式名称和范围,原始著作或公开目录支持模式语义,项目实验才支持当前系统的性能与故障结论。
订单系统架构评审能暴露这个边界。团队可能引用“仓储适合封装持久化”,但这句话不能自动证明当前 ORM 查询减少,也不能证明当前团队应当使用仓储。引用支持的是概念或历史语境,当前性能和故障行为必须由独立实验验证。
↡让读者能从一个来源条目定位到具体章节、模式节点、页码、锚点或版本的精确位置。没有坐标的链接只能证明页面存在,不能证明页面支持当前主张;坐标变化时要记录旧坐标和新的定位方式。
↡标记证据来自原始著作、作者公开目录、出版社元数据、二手解释或当前项目实验的分类。证据等级不是权威排名,而是提醒评审不要用目录摘要支撑实现细节,也不要用一次项目实验改写原始概念的历史含义。
先建立直觉:引用和验证是两条相交的链
↡说明一个模式主张在什么问题、约束、版本和系统边界内仍然适用的条件集合。适用边界把“来源说过什么”与“本项目何时采用”分开;一个公开模式摘要可以支持概念,但不能替团队决定容量、隐私或故障预算。
↡记录当前项目如何复现、质疑或限制一个来源主张的实验、日志、版本和结论。验证台账必须保留输入、环境、观察结果和撤回条件。它是当前项目证据,不是对原书正文的替代。
先预测:一篇公开目录写着某模式用于解决某类问题,能否直接作为“当前系统延迟下降 30%”的依据?答案应是否定的;先把模式语义、项目假设和测量结果拆成三个 Source Claim,再为每个主张选择合适的证据等级。
目录单元到教学证据
参考文献
在 参考文献 的单元边界内,学习者要把订单系统架构评审拆成主张、坐标、来源类型、适用边界和当前验证五类证据。单元键为 poeaa24-references;核心证据是另一位复核者能从引用重新定位主张,并能看出哪些结论来自文献、哪些结论来自项目实验。
评审记录还要回答:来源的版本和发布日期是什么,引用支持定义还是实现细节,当前系统的约束是否匹配,实验是否可重复,来源失效时如何标记和修正。如果所有链接都指向首页,引用就没有形成可审计的坐标。
专属代码案例:来源追踪记录
下面的类型把一个 Source Claim 的最小追踪合同固定下来。它不自动判断来源真伪,而是防止把无坐标链接、未经验证的项目结论和原始模式语义混为一谈。
type EvidenceLevel =
| "author-book"
| "author-catalog"
| "publisher"
| "project-test";
type SourceTrace = {
claim: string;
sourceUrl: string;
coordinate: string;
level: EvidenceLevel;
applicability: string;
verificationLog?: string;
};
function isAuditable(trace: SourceTrace): boolean {
return (
trace.claim.trim().length > 0 &&
/^https?:\/\//.test(trace.sourceUrl) &&
trace.coordinate.trim().length > 0 &&
trace.applicability.trim().length > 0 &&
(trace.level !== "project-test" || Boolean(trace.verificationLog?.trim()))
);
}这段代码提供五项证据:主张必须有内容,URL 必须可访问,Citation Coordinate 不能空缺,Applicability Boundary 必须明确,项目实验必须附 Verification Log。它不把“能打开网页”当成“网页支持主张”,也不替代人工核对来源的版本和语境。
追踪链结构图
追踪链从 Source Claim 进入 Citation Coordinate,再标记 Evidence Level 和 Applicability Boundary,最后连接当前项目的 Verification Log;每一步都可独立质疑。
来源证据与当前验证
来源证据和项目验证不能互相冒充:作者图书页与公开目录用于核对主题和模式坐标,出版社页面用于出版信息,项目测试用于当前版本的行为结论。若两条链不一致,应保留冲突、回到主张范围并记录撤回路径。
一个可复核的来源台账
| 主张 | 来源与坐标 | 证据等级 | 当前验证 | 适用边界 |
|---|---|---|---|---|
| 模式目录按模式族组织,便于按问题检索 | 作者模式目录,对应模式族标题与模式节点 | author-catalog | 课程导航按模式族生成,链接可打开 | 只支持目录范围,不支持本系统性能 |
| 本书讨论企业应用架构中的模式选择 | 作者图书页,图书主题与目录介绍 | author-book | 课程章节映射到官方单元键 | 只支持主题和结构,不复现原书正文 |
| 英文版出版信息与书目可交叉核对 | Pearson 页面,出版元数据 | publisher | 记录译本和出版信息 | 不支持模式实现或项目约束 |
| 当前订单评审的查询数在批量方案下保持固定 | 项目测试报告中的测试名、提交号和运行时间 | project-test | 由本项目测试与日志复核 | 只适用于当前代码、数据规模和运行环境 |
台账的目的不是给每个观点增加链接,而是让引用范围和验证范围保持诚实。若来源只能支持“是什么”,就不要把它写成“在当前系统中一定有效”;若项目测试只跑过一次,也要保留样本、环境和未覆盖条件。
选择与拒绝矩阵
| 评审问题 | 选择参考文献台账的证据 | 应拒绝当前做法的信号 |
|---|---|---|
| 主张 | 每条 Source Claim 都能拆成可检查句子 | 一段话混合定义、建议和性能结论 |
| 坐标 | Citation Coordinate 可定位到版本和具体节点 | 所有链接都指向首页或搜索结果 |
| 等级 | Evidence Level 与主张类型相匹配 | 用出版社元数据支撑实现行为 |
| 边界 | Applicability Boundary 写出约束和未覆盖范围 | 把原书模式自动当成当前架构结论 |
| 验证 | Verification Log 有输入、环境、结果和撤回条件 | 一次成功截图被当成普遍证明 |
常见误区
可验证练习
练习
本组练习围绕 参考文献,要求把来源类型、引用坐标和项目验证拆成可重放证据。
问题 1:拆分主张。 文档写着“仓储模式能让订单查询更快”。应如何改写并建立来源链?
问题 2:补齐坐标。 台账有作者模式目录 URL,但没有说明具体模式节点。复核者还缺什么?
问题 3:处理冲突。 项目实验没有复现来源描述的收益,应该把引用删除还是直接保留原架构?
名词解释
名词解释
本章出现的专业名词,用大白话再讲一遍。
- Source Claim
需要由具体来源或项目证据支持、可被复核者拆解检查的架构陈述。
- Citation Coordinate
用于定位来源具体章节、模式节点、页码、锚点或版本的精确位置。
- Evidence Level
标记证据来自原始著作、作者目录、出版社信息、二手解释或项目实验的分类。
- Applicability Boundary
说明主张在什么问题、约束、版本和系统范围内仍然适用的条件集合。
- Verification Log
记录当前项目复现、质疑或限制来源主张的输入、环境、结果和撤回条件。
本章小结
掌握参考文献的标志,不是收集更多链接,而是能在订单系统架构评审中解释“主张 → 引用坐标 → 证据等级 → 适用边界 → 当前验证”的责任链。作者图书页、公开模式目录和出版社信息支持不同类型的来源事实,项目测试才支持当前行为;当引用没有坐标、目录被当成性能证明或冲突被删除时,应拒绝当前台账并补齐撤回路径。
前后导航
来源与改写范围
- Martin Fowler 作者图书页:核对全书主题、教程与模式参考结构。
- Martin Fowler 模式目录:核对模式名称、所属模式族和作者公开摘要。
- Pearson 出版社页面:交叉核对英文版出版信息与目录范围。