Docs Vault

语雀:https://www.yuque.com/konglingfei-vzag4/onex/uh832w4xh5q8x5hg


上面,我详细介绍了开发一个高质量 Go 项目中如何开发一个高质量 Go 应用部分。本节课,我再来详细讲解下开发高质量 Go 项目中编写高质量项目文档这部分。


工作中我发现,很多开发者非常注重代码产出,但不注重文档产出。他们觉得,即使没有软件文档也没太大关系,不影响软件交付。我要说的是,这种看法是错误的!因为文档属于软件交付的一个重要组成部分,没有文档的项目很难理解、部署和使用。


因此,编写文档是一个必不可少的开发工作。那么一个项目需要编写哪些文档,又该如何编写呢?我认为项目中最需要的 3 类文档是 README 文档、项目文档和 API 接口文档。


下面,我们一一来说它们的编写规范。


README 规范


README 文档是项目的门面,它是开发者学习项目时第一个阅读的文档,会放在项目的根目录下。因为它主要是用来介绍项目的功能、安装、部署和使用的,所以它是可以规范化的。


下面,我们直接通过一个 README 模板,来看一下 README 规范中的内容:

# 项目名称


<!-- 写一段简短的话描述项目 -->


## 功能特性


<!-- 描述该项目的核心功能点 -->


## 软件架构(可选)


<!-- 可以描述下项目的架构 -->


## 快速开始


### 依赖检查


<!-- 描述该项目的依赖,比如依赖的包、工具或者其他任何依赖项 -->


### 构建


<!-- 描述如何构建该项目 -->


### 运行


<!-- 描述如何运行该项目 -->


## 使用指南


<!-- 描述如何使用该项目 -->


## 如何贡献


<!-- 告诉其他开发者如果给该项目贡献源码 -->


## 社区(可选)


<!-- 如果有需要可以介绍一些社区相关的内容 -->


## 关于作者


<!-- 这里写上项目作者 -->


## 谁在用(可选)


<!-- 可以列出使用本项目的其他有影响力的项目,算是给项目打个广告吧 -->


## 许可证


<!-- 这里链接上该项目的开源许可证 -->


更具体的示例,你可以参考 OneX 系统的 README.md

如果你不想手动编写 README.md 文件,你可以借助在线的 README 文档生成工具。例如 readme.so,来帮助你生成格式规范,内容全的 README 文档。


项目文档规范


项目文档包括一切需要文档化的内容,它们通常集中放在/docs 目录下。当我们在创建团队的项目文档时,通常会预先规划并创建好一些目录,用来存放不同的文档。因此,在开始 Go 项目开发之前,我们也要制定一个软件文档规范。好的文档规范有 2 个优点:易读和可以快速定位文档。


不同项目有不同的文档需求,在制定文档规范时,你可以考虑包含两类文档。

  1. 开发文档:用来说明项目的开发流程,比如如何搭建开发环境、构建二进制文件、测试、部署等。
  2. 用户文档:软件的使用文档,对象一般是软件的使用者,内容可根据需要添加。比如,可以包括 API 文档、SDK 文档、安装文档、功能介绍文档、最佳实践、操作指南、常见问题等。


为了方便全球开发者和用户使用,开发文档和用户文档,可以预先规划好英文和中文 2 个版本。


为了加深你的理解,这里我们来看下实战项目的文档目录结构:

docs
├── devel                            # 开发文档,可以提前规划好,英文版文档和中文版文档
│   ├── en-US/                       # 英文版文档,可以根据需要组织文件结构
│   └── zh-CN                        # 中文版文档,可以根据需要组织文件结构
│       └── development.md           # 开发手册,可以说明如何编译、构建、运行项目
├── guide                            # 用户文档
│   ├── en-US/                       # 英文版文档,可以根据需要组织文件结构
│   └── zh-CN                        # 中文版文档,可以根据需要组织文件结构
│       ├── api/                     # API文档
│       ├── best-practice            # 最佳实践,存放一些比较重要的实践文章
│       │   └── authorization.md
│       ├── faq                      # 常见问题
│       │   ├── onex-apiserver
│       │   └── installation
│       ├── installation             # 安装文档
│       │   └── installation.md
│       ├── introduction/            # 产品介绍文档
│       ├── operation-guide          # 操作指南,里面可以根据RESTful资源再划分为更细的子目录,用来存放系统核心/全部功能的操作手册
│       │   ├── policy.md
│       │   ├── secret.md
│       │   └── user.md
│       ├── quickstart               # 快速入门
│       │   └── quickstart.md
│       ├── README.md                # 用户文档入口文件
│       └── sdk                      # SDK文档
│           └── golang.md
└── images                           # 图片存放目录
    └── 部署架构v1.png