用途
coinagerie-define 用于为 coinagerie 术语表编写或改进定义,适用于补全 Markdown 中只有 - **word**: 的空条目、JSON 中的空字符串值,以及审查已有定义。其核心理念是:定义要告诉从未见过这段代码的读者,该词在这里指什么;术语表的存在是因为不同读者会从用法中推断出不同含义,而定义是代码库认可的唯一解读。
定义包含的内容 按顺序最多三部分,每部分一两句话:
- 在此处的含义:该事物在本代码库中具体是什么、做什么、持有什么或决定什么,具体到读者能指认。
- 与日常英语的对照:仅当本代码库的用法与通常含义不同时才写,先说明日常词义,再说明此处如何偏离。若该词按通常含义使用,只写第一部分并保持简短;为套模板而编造对照会误导。
- 所在位置:定义它的代码,以符号和文件(如 hold.service.ts 中的 HoldService)或文件夹表示。名称比行号持久;应指出定义的家,而非每个使用处。 不得复述该词:把词从句子中删掉后,剩余内容仍须表达信息。用同义词定义而该同义词本身未定义,同样不可取。
写作流程
- 找出空缺:Markdown 中的裸
- **word**:条目与 JSON 中的""为未定义项(由 coinagerie-collect 技能列出)。优先处理承载领域含义的词;普通编程词(index、value)给一句简短说明,若在此从无特定含义则放入 exclude.words。 - 寻找词的家:搜索该词及其各种形式。词头会折叠处理(settings 列为 set,复数归为单数,configured 归为 configure);也在标识符内搜索,如 CallGateService 贡献 gate。查找以它命名的类型、类、常量、文件夹或文件,以及旁边的文档和展示其用法的测试。
- 只写代码所示:错误定义比空条目危害更大,空条目至少可被发现。代码无法说清含义时,保留空条目并在报告中说明。
- 多种含义:定义主导含义,并在同一定义中提及其他含义。仅用于构成更大名称的词(如 HoldService 中的 service)按本代码库对该后缀的用法定义。
- 检查文件仍可解析:运行
coinagerie --check。定义不会改变检查结论,但解析失败会在此暴露。
格式
Markdown:- **word**: 定义。 后续行至少缩进一个空格;块内左侧顶格的行会被拒绝;缩进行可含子项目符号,空行可分隔缩进段落;定义可从空条目下一行开始。
JSON:值为定义字符串,换行用 \n。
除非代码中重命名,否则保持加粗词头原样;擅自改动会创建新词,下次 --write 会删除旧条目及其定义。出现在两个术语表中的词在其所列处定义,定义不会在目标间复制;父术语表已有的词通常在子表中排除。
常见错误与修正 复述该词→说明它是什么、做什么或决定什么;写英语词典义→给出此处含义,仅在不同时写对照;逐行解释实现→说明用途,如何实现指向代码;用行号作位置→用符号和文件名;把猜测当作事实→保持空条目,直到代码或作者说明;长定义中出现左侧顶格行→每行续行都缩进。