从ObjC到Swift再到AI,我是怎么把团队文档工具盘活的

Web云计算
2026-06-25 18:18
阅读 370

下午三点半,阳光正好。我穿着大裤衩,端着冰美式,看着屏幕上的猫在键盘上踩出一串asdfghjkl。刚用Claude帮我重构完一个祖传的OC网络请求单例,顺便让它把注释补全了。算下来,我做iOS开发也整整6年了。从当年满屏幕的@property (nonatomic, copy)写到如今Swift里清爽的let,见证了Swift的崛起,也见证了团队文档从“完全没有”到“一坨不可名状的屎山”的演变。

作为一个常年远程办公、在家撸代码的“居家型”程序员,我平时极度依赖ChatGPT和Claude辅助开发,自己私下也喜欢折腾SwiftUI、Rust这些新玩意儿,但在公司项目里,我还是那个坚守UIKit+Swift混编、追求“只要不崩就别动”的保守派。不过,在“文档工具”这件事上,我最近确实折腾出了一点新花样,今天就来跟大家聊聊这段踩坑与填坑的血泪史。

远程办公带来的文档灾难

故事的起因是去年年底,公司突然宣布全员远程办公两周。这下可好,以前在工位上,后端老哥改了个接口字段,转头吼一嗓子,或者拿杯奶茶贿赂一下测试妹子就能解决的事,现在全得靠线上沟通。

远程的第三周,线上突然爆了一个严重的Crash。我排查了两个小时,最后发现是后端悄悄把某个分页接口的返回结构从数组改成了字典,而我们的iOS端还在用老逻辑强转。我气急败坏地去翻项目的API文档,好家伙,文档上写的还是V1版本的字段,连个Changelog都没有。当时我真的想顺着网线过去把后端的键盘给砸了。

痛定思痛,我意识到一个问题:远程办公环境下,文档就是团队的生命线。如果没有一套好用、大家又愿意用的文档工具,团队协作的效率会呈指数级下降。于是,我主动请缨,决定把团队的文档工具链彻底翻新一下。

选型踩坑:为什么大家就是不爱写文档?

一开始,我像个无头苍蝇一样调研市面上的文档工具。Notion?太灵活了,这帮人连建个页面都能建出花来,最后找文档像大海捞针。Confluence?太重了,加载慢得像是在用IE浏览器看视频。最后我们选了飞书文档,毕竟国内网络环境友好,而且跟我们的即时通讯工具深度绑定。

工具是换了,但核心问题没解决:大家还是不爱写文档

为什么?因为写文档太特么反人性了。写代码有编译通过的即时反馈,有解决Bug的多巴胺分泌,而写文档只有枯燥的打字和排版。你让一群习惯了“面向StackOverflow编程”的程序员,突然变成“面向文档编程”,这简直比让后端老哥去写SwiftUI还难。

我反思了一下,既然人不想写,那就让AI来写。我平时重度依赖大模型写代码,为什么不能用来写文档呢?经过一番对比和测试,我发现字节的“豆包”大模型在中文语境理解、代码逻辑总结以及长文本处理上,居然有奇效,而且API调用非常稳定,不用折腾网络环境。

破局思路:用AI打造“无感”文档流

我的核心思路是:绝对不增加程序员的额外工作量,把文档生成融入到他们已有的工作流中。

1. 代码级文档:Swift DocC + 豆包API

iOS这边,苹果推出了DocC,这玩意确实好,能直接生成漂亮的API文档。但痛点在于,写DocC格式的注释太繁琐了。

我写了个Python脚本,结合豆包的API,做了一个自动润色工具。大家只需要在代码里写最白话的注释,脚本会自动调用豆包,将其转化为标准的DocC格式,并补充参数说明和返回值描述。

import requests
import json

def generate_docc_comment(plain_comment, code_snippet):
    # 这里使用豆包的API,Prompt设计是关键
    prompt = f"""
    你是一个资深的iOS开发专家。请将以下白话注释和代码片段,转化为标准的Swift DocC注释格式。
    要求:
    1. 包含 - Parameter 和 - Returns 标签。
    2. 语言专业、简洁,符合苹果官方文档风格。
    3. 如果代码有潜在的线程安全问题,请在 - Warning 中提示。
    
    代码片段:
    {code_snippet}
    
    原始白话注释:
    {plain_comment}
    """
    
    # 调用豆包API (伪代码,实际需替换为真实的API endpoint和Key)
    response = requests.post(
        "https://api.doubao.com/v1/chat/completions",
        headers={"Authorization": "Bearer YOUR_API_KEY"},
        json={
            "model": "doubao-pro-32k",
            "messages": [{"role": "user", "content": prompt}]
        }
    )
    return response.json()['choices'][0]['message']['content']

# 测试一下
code = "func fetchData(userId: String) async throws -> UserData"
plain = "根据用户id去拉取数据,注意这个接口不是线程安全的,必须在主线程调"
print(generate_docc_comment(plain, code))

有了这个脚本,兄弟们写注释只需要一句话,剩下的交给豆包。编译的时候,Xcode直接就能渲染出漂亮的DocC文档。

2. 接口级文档:Git Hook + 变更日志自动生成

后端那边我也顺手帮他们搞了个自动化。我在项目的Git Hooks里加了一个pre-push脚本。每次推送代码前,脚本会抓取这次的Git Diff,然后扔给豆包,让大模型总结这次提交修改了哪些接口、影响了哪些业务逻辑,最后自动生成一段Markdown格式的变更日志,追加到飞书文档的API变更记录里。

这样一来,后端老哥只要正常提交代码,文档就自动更新了。他们甚至都没意识到自己在“写文档”。

3. 知识沉淀:技术分享的文档化

以前我们团队每周五下午都有“技术分享”,大家做个PPT,讲完就忘,过两个月遇到同样的问题还得重新踩坑。

我立了个规矩:以后的技术分享,PPT可以不做,但必须在飞书文档里写一篇技术沉淀。为了降低大家的抵触情绪,我利用豆包做了一个“大纲生成器”。分享人只需要在文档里输入几个关键词或者语音转文字,豆包就能自动扩写成一篇结构完整、带代码示例的技术博客。

效果对比与团队反馈

这套“AI辅助文档流”跑了大概两个月,效果出乎意料的好。我拉了一下数据,做了个简单的对比:

指标 传统文档模式 AI辅助文档模式 变化
单篇API文档编写耗时 约 15 分钟 约 2 分钟 效率提升 85%
接口变更漏更文档率 约 40% 约 5% (仅AI总结错误) 准确率大幅提升
技术分享文档沉淀率 30% (经常鸽) 100% 彻底治愈拖延症
团队内部吐槽次数 每周至少 3 次 几乎绝迹 团队氛围和谐

上周五的“技术分享”会上,我把这套东西拿出来做了一次复盘。一开始,几个老油条还觉得我在“卷”,在搞形式主义。但当我现场演示了如何用豆包在30秒内把一段乱七八糟的OC代码注释转化为完美的DocC文档时,全场安静了。

“卧槽,这玩意能少写几百行字啊!”后端的老李第一个喊了出来。 “赶紧把脚本链接发群里,别逼我跪下来求你。”测试妹子也紧随其后。

看着大家纷纷真香,我心里那种“终于搞定了”的暗爽,简直比解决了一个隐藏了三年的内存泄漏还要开心。

总结与反思

回过头来看,这次折腾文档工具的经历,让我对“工程化”有了更深的理解。

很多技术人在做技术选型或者推行新工具时,容易陷入一个误区:认为只要工具足够强大、足够先进,大家就会自然而然地去用。但现实是,任何违背人性的工具,最终都会沦为摆设

文档工具的本质,其实不是工具,而是工程文化。我们要做的,不是拿着鞭子抽大家去写文档,而是通过技术手段(比如引入豆包这样的大模型),把写文档的阻力降到最低,甚至将其无缝融入到开发者已有的习惯中。

从ObjC到Swift,是苹果在推动开发体验的进化;从手写文档到AI辅助生成,是我们自己在团队管理上的一次小步快跑。虽然我只是个写了6年代码的iOS老兵,平时也就在家撸撸代码、逗逗猫,但能通过一点技术手段,让团队的协作少一点扯皮,多一点顺畅,这事儿,我觉得挺酷的。

不说了,猫又把咖啡杯碰倒了,我得先去擦桌子,顺便让Claude帮我写个自动清理桌面的SwiftUI小组件。我们下期再见。

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝