程序员英语 03:读懂文档中的条件与约束
技术文档阅读的结果应该是一组可以核对的判断。打开一页文档后,先确认产品、版本、平台和页面类型:教程里的简化示例,不一定列出了参考手册中的全部限制。
用五个问题提取信息
下面是虚构批处理工具的说明,不代表某个现有产品:
By default, the importer reads UTF-8 files and skips blank lines. When strict mode is enabled, a malformed record stops the import. Otherwise, the importer records the error and continues. The importer writes output only if at least one valid record is found. Existing output files are not overwritten unless
--replaceis set.
| 问题 | 原文证据 | 可得出的结论 |
|---|---|---|
| 默认行为是什么? | by default、skips | 默认按 UTF-8 读取并跳过空行 |
| 什么触发变化? | when strict mode is enabled | 严格模式遇到格式错误会停止 |
| 否则会怎样? | otherwise | 非严格模式记录该错误并继续 |
| 有什么必要条件? | only if、at least one | 输出要求至少一条有效记录 |
| 有什么例外? | not ... unless | 未设置替换选项时,不覆盖已有输出文件 |
这张表仍没有回答:停止前已经写出的内容会回滚吗?错误记录存到哪里?默认是否开启严格模式?缺少信息就记录“未说明”,再找相关章节或做实验,不能把常见行为当成文档承诺。
分清充分条件与必要条件
The tool writes output if a record is valid. 表达“记录有效就输出”。The tool writes output only if a record is valid. 表达“输出必须以记录有效为前提”,并不排除权限不足等其他阻止输出的条件。
读 unless 可以先改成 if not:Do not overwrite the file unless replacement is enabled. 可理解为“如果没有启用替换,就不要覆盖”。它没有证明启用后一定成功覆盖,还可能存在权限等问题。
在代码里,这些差别会落到分支条件;可对照程序员数学的逻辑篇理解。
规范中的 MUST、SHOULD、MAY
在明确采用 BCP 14 约定的规范中,MUST 表示必须满足,MUST NOT 表示禁止;SHOULD 表示有充分理由且理解后果时才可例外;MAY 表示允许选择。可核对 RFC 2119。
RFC 8174 进一步明确了大写用法。不要把任何教程中小写的 may 都当成规范级许可,也不要因为一句话没有大写关键词就认定它没有要求;仍需阅读文档自己的约定和完整上下文。
练习:把段落变成测试问题
针对开头的 importer 说明,判断:
- 严格模式下,第 5 行格式错误,第 6 行一定继续读取。
- 只有空行的输入,一定写出一个空结果文件。
- 已有输出文件且未传
--replace,允许直接覆盖。 - 非严格模式出现格式错误后,能否继续?输出一定成功吗?
查看答案与讲解
- 错。原文说格式错误停止导入。
- 错。原文把存在有效记录列为输出的必要条件。
- 错。覆盖已有文件必须满足替换选项条件。
- 能继续读取,因为
otherwise ... continues;但不能保证输出成功,文件权限、有效记录数量等条件仍可能阻止输出。
可以据此设计“严格模式 + 错误记录”“全空行”“已有输出 + 无替换参数”三个检查场景。阅读产生了可验证的问题,才真正进入开发工作。
一份可复用的阅读笔记
记录四行即可:Confirmed(已确认)、Conditions(条件)、Unknown(未说明)、Next check(下一步核查)。例如:
Confirmed: Strict mode stops on a malformed record.
Conditions: Output requires at least one valid record.
Unknown: Whether earlier output is rolled back.
Next check: Read the section on partial imports.不要为了写得流畅,把 Unknown 改写成未经证实的结论。
继续阅读
- 读写与对话练习
- 句法与表达查阅
- 句法与表达查阅