你有没有过这种时刻?
花了三个小时写了一份技术文档,自认为逻辑清晰、结构完美。结果发到群里,同事反馈:“这段代码缩进乱了,根本跑不通。”或者更惨——你自己在维护项目时,回头看自己写的文档,发现连代码在哪里结束都不知道,最后只能去翻源码,感叹一句:“我当时到底写了啥?”
其实,问题往往不出在内容上,而出在呈现方式上。
今天我们不聊高大上的架构,只聊一个最实用、却最容易被忽视的技能:如何用最规范的代码块写文档。这不仅是排版技巧,更是一种让技术分享像聊天一样简单、让知识真正落地的高效思维。
为什么“代码块”比“正文描述”更有力量?
想象一下,你要教朋友做一个番茄炒蛋。
方式A(纯文字描述):
先把鸡蛋打散,加点盐,然后热锅凉油,倒入蛋液,等底部凝固了翻个面,盛出来。接着再放点油,炒西红柿,出汁了就把鸡蛋倒回去,加糖,翻炒均匀就能吃了。
朋友看完后问你:“油温多少?鸡蛋要打多久?糖放几克?”你只能靠感觉回答,朋友依然一脸懵。
方式B(代码块/结构化展示):
# 准备阶段
打散 2 个鸡蛋 + 少许盐 → 搅拌均匀 30 秒
切 2 个西红柿,块大小约 2cm
# 烹饪阶段
热锅 → 倒入 15ml 油 → 油温六成热
倒入蛋液 → 凝固后盛出备用
再加 10ml 油 → 炒西红柿 → 出汁后倒入鸡蛋
加 3g 糖 → 翻炒均匀 → 出锅
你看,第二种方式不仅清晰,而且可执行。代码块在技术文档中的作用,就是这种“可执行性”的极致体现:它把模糊的自然语言,转化成了精确的、可复制、可运行的指令。
代码块的核心价值:读得懂、写得快、跑得通
1. 别人读得懂:消除歧义
自然语言天生具有歧义性。“设置超时时间为30秒”——是30,000毫秒?还是30秒?在代码块里,你写 timeout_ms: 30000,答案一目了然。
代码块强制你使用精确的语法,无论是 JSON、YAML、Python 还是 Shell,这种精确性本身就是最好的解释。
2. 你写得快:减少格式纠结
以前写文档,你可能花50%的时间在调整缩进、对齐、加粗、斜体上。现在?
# 只需这样写
result = await client.fetch_data(token="abc123")
一行代码块,缩进自动规范,字体统一,无需担心 Word 里的换行错位。Markdown 的代码块语法 (`) 让你在写作时进入“心流”状态,专注于内容本身。
3. 直接复制粘贴运行:真正的无缝衔接
这是代码块最革命性的地方。当你的读者看到一段清晰的代码,他们可以:
- 一键复制(大多数现代编辑器支持)
- 直接粘贴到 IDE 或终端
- 立即运行,验证结果
这消除了“看文档 → 手动输入代码 → 运行报错 → 排查错误”的巨大摩擦。技术分享的闭环,在这一刻完成。
实战:如何用代码块写出“像聊天一样简单”的文档?
场景一:API 接口说明
糟糕的写法:
用户创建接口需要POST请求,参数有用户名、密码、邮箱,返回JSON格式的数据,包含用户ID和创建时间。
优秀的代码块写法:
POST /api/v1/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
{
"username": "zhangsan",
"password": "securePass123!",
"email": "zhangsan@example.com"
}
响应示例:
{
"code": 200,
"data": {
"user_id": "u_987654321",
"created_at": "2026-07-10T08:30:00Z"
}
}
看,这就像在给开发者展示一个“使用说明书”,没有废话,直接给示例。
场景二:配置项解释
糟糕的写法:
在 config.yaml 中,你需要配置数据库连接,主机是 localhost,端口是5432,数据库名是 mydb,用户名是 admin,密码是你的数据库密码。
优秀的代码块写法:
# database_config.yaml
database:
host: "localhost" # 数据库服务器地址
port: 5432 # PostgreSQL 默认端口
name: "mydb" # 数据库名称
credentials:
username: "admin"
password: "${DB_PASSWORD}" # 建议从环境变量读取,避免硬编码
这样写,不仅说明了“是什么”,还暗示了“为什么”(如密码不应硬编码),甚至给出了最佳实践。
场景三:错误排查指南
糟糕的写法:
如果报错说“connection refused”,那可能是数据库没启动,或者端口不对,检查一下配置。
优秀的代码块写法:
# 步骤1: 检查数据库是否运行
$ systemctl status postgresql
● postgresql.service - PostgreSQL database server
Active: active (running) since Mon 2026-07-10 08:00:00 UTC
# 步骤2: 测试端口连通性
$ telnet localhost 5432
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
# 如果步骤2显示 "Connection refused",则检查配置:
$ grep "port" /etc/postgresql/14/main/postgresql.conf
port = 5432
这种“终端对话”式的文档,让读者感觉自己是在和一个经验丰富的老司机一起排查问题,而不是在读一份冷冰冰的说明书。
代码块的高级技巧:让文档“活”起来
1. 使用语言标注,提升可读性
不要只写三个反引号,要指定语言:
```python
def greet(name):
return f"Hello, {name}!"
```
这样,编辑器会高亮语法,读者一眼就能看出这是 Python 代码,而不是其他语言。
2. 混合使用:代码 + 注释 + 输出
最好的代码块文档,不仅是代码,还包括“运行结果”。
import requests
response = requests.get("https://api.github.com/user", auth=("user", "pass"))
print(response.status_code)
# 输出: 401
读者不仅看到代码,还看到预期的输出,这大大降低了理解成本。
3. 错误示例 vs 正确示例
对比是学习最快的方式。
- // 错误:忘记处理异常,程序会崩溃
- def divide(a, b):
- return a / b
+ // 正确:使用 try-except 捕获异常
+ def divide(a, b):
+ try:
+ return a / b
+ except ZeroDivisionError:
+ return "除数不能为零"
这种“diff 风格”的代码块,让读者一眼看出问题所在和改进方法。
4. 为不同角色提供不同视角的代码块
同一份文档,可以为新手和专家提供不同的代码块。
给新手的简化版:
// 简单连接数据库
const db = connect("mongodb://localhost:27017/mydb");
给专家的完整版:
// 生产环境连接配置
const db = connect("mongodb://localhost:27017/mydb", {
maxPoolSize: 10,
serverSelectionTimeoutMS: 5000,
ssl: true,
authSource: "admin"
});
这样,不同层次的读者都能找到对自己有用的信息。
工具推荐:让写代码块文档变得轻松
1. Markdown 编辑器
- Typora:所见即所得,代码块实时高亮,导出方便。
- VS Code:内置 Markdown 预览,配合插件(如 Markdown All in One)功能强大。
- Obsidian:双向链接 + 代码块,适合构建个人知识库。
2. 在线工具
- Carbon:把代码变成精美的图片,适合分享到社交媒体。
- Hanselman’s CodeBlock:一个浏览器工具,帮助你快速生成带语法高亮的代码块。
3. 自动化测试代码块
有些团队会把代码块作为“可执行文档”,通过工具(如 Doctest、pytest-markdown)自动运行文档中的代码块,确保文档始终与代码同步。
# 在 pytest 中,你可以这样写文档:
def test_divide():
"""
>>> divide(10, 2)
5.0
>>> divide(10, 0)
'除数不能为零'
"""
pass
这样,文档不仅是给人看的,也是给机器验证的。
最后:像聊天一样写文档
技术文档的最高境界,不是“专业”,而是“自然”。
当你用代码块写文档时,你实际上是在和读者进行一场“协作式对话”:
- 你不是在“告诉”他怎么做,而是在“展示”给他看。
- 你不是在“解释”一个概念,而是在“演示”它的运行。
- 你不是在“要求”他阅读,而是在“邀请”他复制、粘贴、运行、体验。
这种风格,就像你和同事在白板前聊天,你一边说,一边画出草图,他一边看,一边点头,然后拿起笔开始写。
所以,下次当你准备写一份技术文档时,试试这个心态:
“如果我要把这个知识教给一个刚入职的朋友,我会怎么给他看示例?”
然后,用代码块,把他需要的每一个例子、每一次运行、每一个错误提示,都清晰地呈现出来。
你会发现,你写得更快,读者读得更懂,知识传递得更有效。
技术分享,本该如此简单。
行动建议:
- 从今天起,把你正在写的文档中,所有涉及代码的部分,都用规范的代码块重新整理。
- 尝试加入“预期输出”和“错误示例”,让文档更完整。
- 找一个同事,让他用你的文档实际操作一遍,收集反馈,持续优化。
记住,最好的文档,不是写得最华丽的,而是让读者最容易上手的。而代码块,就是你实现这一目标的最强工具。
