1. 概述

KDoc 是 Kotlin 官方推荐的代码文档格式,可看作是 Javadoc 的扩展版本,专门支持 Kotlin 语言特有的语法结构。

本文将介绍 KDoc 的基本用法、优势以及如何高效地在项目中使用它。我们还会探讨几种常见的文档编写方式,帮助你在团队协作和维护性上少踩坑。

2. 理解 KDoc

KDoc 的核心设计融合了 Javadoc 的块标签语法Markdown 的行内标记语法,兼具结构化与可读性。

✅ 关键点:

  • Kotlin 编译器能识别 KDoc 语法
  • 配合 Dokka 工具,可生成 HTML、PDF 等多种格式的文档
  • 统一的文档风格有助于提升代码可读性和团队协作效率

⚠️ 注意:虽然写法类似 Javadoc,但 KDoc 支持 Markdown 渲染,因此你可以使用 *斜体***加粗** 等语法增强表达力。

3. 如何使用 KDoc

KDoc 注释以 /** 开始,*/ 结束,每行前的 * 不属于内容部分(仅用于排版)。根据约定:

  • 第一个空行前的内容为 摘要描述
  • 后续内容为 详细说明

3.1 示例类

下面是一个 Blog 类的完整 KDoc 示例,包含泛型、属性、构造函数、方法和引用等常见元素:

/**
 * A blog of *articles*.
 *
 * This class is just a **documentation example**.
 *
 * @param T the type of article in this blog.
 * @property name the name of this blog.
 * @constructor creates an empty blog.
 * @see com.baeldung.kdoc.TitledArticle
 * @sample com.baeldung.kdoc.blogSample
 */
class Blog<T>(private val name: String) {

    private var articles: MutableList<T> = mutableListOf()

    /**
     * Adds an [article] to this blog.
     * @return the new number of articles of the blog.
     */
    fun add(article: T): Int {
        articles.add(article)
        return articles.size
    }
}

/**
 * An article with a title.
 *
 * @property title the title of this article.
 * @constructor creates an article with a title.
 */
data class TitledArticle(private val title: String)

private fun blogSample() {
    val blog = Blog<TitledArticle>("Baeldung on Kotlin")
    val blogCount = blog.add(TitledArticle("An Introduction to KDoc"))
}

📌 要点解析:

  • 使用 [article] 可自动链接到参数名,这是 KDoc 特有的 Markdown 扩展
  • @see 提供相关类的跳转链接,便于阅读者快速定位
  • @sample 引入实际调用示例,极大提升文档实用性 —— 这个功能很多人不知道,但特别实用!

3.2 常用块标签(Block Tags)

KDoc 的块标签以 @ 开头,必须写在被注释元素的上方。以下是开发中最常用的标签清单:

标签 用途
@param 描述函数或构造函数的参数
@return 说明返回值含义
@throws / @exception 声明可能抛出的异常类型
@receiver 用于扩展函数,描述接收者对象
@property 文档化类或接口中的属性
@constructor 描述构造函数行为
@see 关联其他类或方法,增强导航性
@sample 内嵌代码示例,强烈建议多用
@since 标记该元素从哪个版本引入
@suppress 忽略特定编译警告
@author 标注作者信息(虽不强制,但在开源项目中有价值)

❌ 常见误区:
不要滥用 @author,尤其在公司内部项目中容易引发“甩锅文化”。更推荐通过 Git 提交记录追溯责任人。

✅ 推荐实践:
结合 CI 流程使用 Dokka 自动生成文档,并部署到内部 Wiki 或静态站点,让文档真正“活”起来。

4. 总结

KDoc 凭借其对 Javadoc 语法的兼容性和对 Markdown 的良好支持,成为 Kotlin 项目中不可或缺的文档工具。

它不仅能让 IDE 更好地提示代码意图,还能通过 Dokka 输出高质量外部文档。合理使用 @param@return、尤其是 @sample 这类标签,可以显著提升代码的可维护性和新人上手速度。

📌 最后提醒:写文档不是形式主义,而是对自己和同事的时间负责。别等到接手人骂你“没文档”时才后悔没早点规范使用 KDoc。


原始标题:An Introduction to KDoc