在看官方文档的时候,突然心血来潮,想翻译一下一篇博客玩玩。
原文章地址 Godoc: documenting Go code
Go 语言官方对于代码的文档非常重视,文档对于软件的可阅读性和可维护性有着至关重要的地位。当然,文档必须要是准确可理解的,也需要易于编写和维护。理性情况下,文档应该与代码紧密联系。这样子才能方便于程序员修改和编写。
所以,我们开发了 godoc 文档工具。本文描述了的 godoc 关于的“文档”的方法论,和解释如何按照使用规范给你自己的项目写出一个好的文档。
godoc 会解析源文件代码和注释,生成基于HTML的页面或者纯文本格式的文档。这样子文档就与代码紧密联系。举个例子,通过在 godoc 的页面点击,你就可以在一个函数的文档说明和源代码中快速跳转。
godoc 在概念上与 Python 的“Docstring”和 Java 的“Javadoc"相似,但是 godoc 设计的更加简单化。godoc 读取的代码注释的不需要特定的结构化(Docstring 使用),也不需要特定的语法(JavaDoc 使用),godoc 从代码读取的注释就是简单的“代码注释”,就算你不使用 godoc 也可以直接阅读的注释。
使用的规范很简单:在类型,变量,常量,函数,包声明的上方写下注释即可, 中间不要有空行。godoc 会把这些注释以文字的形式呈现在被注释的对象旁边。举个例子,下方就是 fmt 包的Fprint
函数的注释。
|
|
值得注意的是该注释是以被注释的对象命名开头的一个完整的句子。 这个使用规范可以方便我们生成各种各样的格式文档,从简单的纯文本到 UNIX 是 man 的帮助页,还可以使用其他工具更见简单地获取到信息, 比如提取出第一行或者句子。
在包的声明处的注释,需要写整个包的概括说明。这些注释可以很简洁,就像 sort 包中的简短描述:
|
|
也可以很详细,比如 gob 包。有另一个使用惯例:像这种有这大量注释文档的包,单独一个doc.go
文件,放置包的注释。
不论包的注释文档大小,第一句注释会被展示在 godoc 的呈现包列表中。
那些没有与最外层声明(可以简单理解为包内全局对象)连接在一块的注释会被 godoc 忽略。但是,有一个例外。那些写在最外层且以“BUG(who)”开头的注释,会被识别为已知的 bug,且会被包含在包文档的“Bugs”分区中。这个“who”部分应该填写可以提供更加详细信息的人名。举个已经在 bytes 包中注释的问题:
|
|
某些时候,当一个结构体字段,或者函数,类型,甚至一个整个包变成了冗余或者没有使用必要,但是还是需要与旧代码保持兼容。这时,可以增加一个一段落以“Deprecated:”开头后面跟废弃信息的注释。标识该对象不应该再被使用。
下面展示一些 godoc 把注释转化成网页的规则:
- 不同的段落需要以空行分割。否则将会被识别成同一段。
- 带有格式的文本,需要要缩进。
- URL 会被转化成网页连接,无需特殊处理。
上方的这些规则不需要你做任何的特殊处理。
事实上,godoc 的极简处理方式使得它非常容易使用。所以,很多 go 项目,包括标准库,都已经开始开始遵循 godoc 的注释文档规范。
你自己的项目也可以通过编写符合文中规范的注释生成漂亮的文档。任何下载在$GOROOT/src/pkg
或者任何在 GOPATH
空间下的 go 代码包,都可以被 godoc 的命令行或者 HTTP 的接口访问, 你也可以通过在命令后添加-path
参数或者直接使用godoc .
来指定源码的路径。在godoc 文档 你可以查看到更加详细的内容。