前言
最近经常被要求写文档。
比如新增了一个功能,或者对原有功能进行了比较大的修改,往往都需要补一份对应的文档。
我一开始其实不太理解这种文档到底应该写什么,就直接把它当成了更新日志来写。
差不多就是一个字数更多、内容更详细一点的 Git Commit Log。
然后就被打回重写了,难受。
后来才发现,貌似不是这么一回事。
因此写一篇博客,简单记录一下我目前对“开发文档到底应该怎么写”的理解。
要写什么样的文档
首先,不要把文档写成 Git Commit Log。
这里并不是说不要写“更新了什么”,而是说:
不要只写更新了什么。
Git Commit Log 更关注的是代码本身发生了哪些变化,比如:
- 修改了哪个模块。
- 增加了什么功能。
- 修复了什么 Bug。
- 删除了什么逻辑。
这些当然很重要。
但是一份真正给别人看的开发文档,还应该补充更多上下文。
比如:
- 为什么要增加这个功能。
- 原来存在什么问题或者需求。
- 这个功能应该怎么使用。
- 修改涉及了哪些模块。
- 有没有兼容性问题。
- 对原有功能有没有影响。
- 有没有资源占用、性能或者其他方面的变化。
- 使用时有什么需要特别注意的地方。
因为别人并没有参与你的整个开发过程。
你可能花了几天甚至几周研究这个问题,所以看到一句:
增加 XXX 功能,修改 XXX 接口。
马上就知道发生了什么。
但是别人看到这句话,可能完全不知道:
为什么要改?改之前是什么样?改完以后怎么用?为什么一定要这么实现?
所以文档最重要的一件事,就是把这些你脑子里默认存在的“上下文”补充出来。
最好让一个对这次修改不太熟悉的人,也能够大致看懂发生了什么。
当然,也不是越详细越好。
如果把每一行代码为什么这么写都塞进文档,最后写成几十页,别人可能反而懒得看。
所以我目前比较倾向于:
让新人能够看懂背景,让熟悉项目的人能够快速找到重点。
该详细的地方详细,该省略的地方省略。
文档的价值
以前我对文档的理解比较简单。
感觉代码都已经写在那里了,为什么还要另外写一份文档?
后来才慢慢发现,代码和文档记录的其实不是完全一样的东西。
代码更多记录的是:
“程序现在是怎么实现的。”
而文档还需要记录:
“为什么要这么实现。”
很多设计上的取舍,其实很难只通过代码本身看出来。
比如为什么没有直接修改原有接口,而是增加了一层兼容逻辑?
为什么选择多占一些内存,而不是降低性能?
为什么某个看起来很奇怪的判断不能删除?
这些信息如果没有被记录下来,过几个月以后,可能连当时写代码的人自己都忘了。
更不用说后来接手项目的人。
所以文档其实也是个人或者组织知识库的重要组成部分。
代码会告诉你“现在是什么样”,而文档可以帮助你理解“为什么会变成这样”。
对于长期维护的项目来说,这些信息非常重要。
而且现在 AI 越来越强,好的文档还有一个新的价值:
它本身就是高质量的项目上下文。
如果一个项目拥有比较完整的设计文档、接口说明、修改记录和问题分析,那么无论是本地 AI 还是其他代码 Agent,都可以更快理解整个项目。
相比直接把几十万行代码全部丢给 AI,让它自己猜历史背景,一份写得清楚的文档往往能提供更有效的信息。
所以从这个角度来看:
好的文档,本身就是一种高质量的数据资产。
它不仅方便人维护项目,也能让 AI 更快地理解和协助开发。
总结
总之,写开发文档时要意识到一件事:
别人没有你脑中的“上下文”。
你经历了需求讨论、代码阅读、Bug 调试和方案选择,所以很多事情对你来说可能已经是理所当然的。
但是别人并不知道这些过程。
因此文档不能只告诉别人:
“我改了什么。”
还应该尽量解释:
“为什么要改、怎么使用、有什么影响、需要注意什么。”
当然,也不要为了显得详细而写一大堆没有必要的内容。
一份好的文档,应该让需要了解这件事的人能够快速获得足够的信息。
公司要求写文档,通常也不是为了让你以后拿出来“复习”。
更多时候是为了团队协作、知识传递和长期维护。
毕竟代码写完以后,真正需要维护它的人,未必还是当初写代码的那个人。
文章作者:成元
上次更新:2026-07-29