Skip to content

文档工程

文档是软件产品的重要组成部分,良好的文档降低用户学习成本、减少支持成本、提高团队协作效率。文档工程是系统化地创建、维护和改进文档的实践,将文档视为一等公民,与代码同等重视。

文档类型

用户文档

用户手册:介绍产品的使用方法,面向最终用户。

快速开始:帮助用户快速上手,通常是 5-10 分钟的入门教程。

API 文档:描述 API 的使用方法,包括请求响应示例。

故障排查:列出常见问题和解决方案。

开发文档

架构文档:描述系统架构、设计决策、技术选型。

开发指南:指导开发者如何搭建开发环境、构建项目、运行测试。

代码规范:编码风格、命名规范、最佳实践。

部署文档:描述如何部署应用,包括环境要求、配置说明。

运维文档

监控手册:监控指标含义、告警处理流程。

应急预案:常见故障的处理步骤,联系人信息。

变更记录:系统变更的历史记录,便于问题追溯。

API 文档

OpenAPI 规范

OpenAPI(原 Swagger)是 RESTful API 的文档标准。

信息描述:API 基本信息(标题、版本、描述)。

路径定义:每个端点的路径、方法、参数、响应。

数据模型:请求和响应的数据结构。

安全定义:认证方式(API Key、OAuth2)。

文档生成

Swagger UI:根据 OpenAPI 规范自动生成交互式文档。

Redoc:生成美观的静态文档页面。

代码注释:从代码注释自动生成文档(如 Java Javadoc、Go Doc)。

文档示例

清晰的示例是 API 文档的关键。

请求示例:展示真实的请求格式,包括 headers、body。

响应示例:展示成功和失败的响应。

错误码:列出所有可能的错误码和含义。

使用场景:展示 API 的典型使用场景。

文档工具

Markdown

Markdown 是轻量级标记语言,易于编写和阅读。

语法简单:基本语法可以在几分钟内学会。

广泛支持:几乎所有文档平台都支持 Markdown。

版本控制:纯文本格式,适合 Git 管理。

静态站点生成器

VitePress:基于 Vite 的文档生成器,本站使用。

Docusaurus:Facebook 开源的文档平台,支持多版本。

Hugo:Go 编写的快速静态站点生成器。

GitBook:商业文档平台,提供托管服务。

API 文档工具

Swagger:OpenAPI 规范的实现工具。

Postman:API 开发和文档平台。

Apifox:国产 API 管理工具,支持文档、Mock、测试。

架构文档工具

Mermaid:文本到图表的工具,支持流程图、时序图、状态图。

PlantUML:UML 图表工具,支持类图、时序图、组件图。

C4 Model:架构图描述语言,关注上下文、容器、组件、代码。

文档最佳实践

文档即代码

版本控制:文档与代码同仓库管理,版本同步。

审查流程:文档变更与代码变更一起审查。

自动化构建:文档作为构建流程的一部分,自动生成和部署。

文档结构

层次清晰:文档有明确的层次结构,便于导航。

搜索友好:提供搜索功能,快速定位内容。

多级导航:侧边栏提供多级导航,展示文档结构。

文档内容

面向读者:根据读者背景调整内容深度。

图文并茂:使用图表、截图辅助说明。

示例驱动:提供可运行的示例,帮助读者理解。

保持更新:代码变更时同步更新文档,避免文档过时。

文档风格

简洁明了:用简单的语言表达复杂的概念,避免术语堆砌。

主动语态:使用主动语态,如"点击按钮"而非"按钮被点击"。

一致性:术语翻译、格式风格保持一致。

交互式文档

可运行示例:在文档中嵌入可运行的代码片段。

交互式 API:文档中的 API 可以直接调用。

实时预览:修改代码实时预览效果。

文档维护

文档生命周期

创建:新功能开发时同步创建文档。

更新:代码变更时更新相关文档。

废弃:功能移除时标记文档为废弃。

归档:旧版本文档归档保留,便于参考。

文档审查

技术审查:确保文档内容准确、完整。

语言审查:确保文档语言通顺、易懂。

用户反馈:收集用户反馈,持续改进文档。

文档指标

页面浏览:了解哪些文档最常被访问。

停留时间:了解文档是否有帮助。

搜索关键词:了解用户在寻找什么。

跳出率:了解文档是否满足用户需求。

文档文化

文档优先

先写文档:开发功能前先写文档,明确需求。

文档驱动:文档是设计的一部分,而非开发后的补充。

文档评审:文档与代码同等重视,需要评审才能合并。

知识共享

文档分享:定期分享文档编写经验。

文档培训:培训团队成员如何编写高质量文档。

文档激励:认可和奖励文档贡献者。

持续改进

定期审查:定期审查文档,更新过时内容。

用户调研:了解用户文档需求,改进文档结构。

工具优化:持续优化文档工具,提高编写效率。

文档工程是软件工程的重要组成部分,良好的文档降低沟通成本、提高团队效率、改善用户体验。建立文档优先的文化,将文档视为一等公民,是构建高质量软件产品的关键。