ARTICLE · 1000070
满屏都在吹AI一天写App,真用一年我发现全错了
AI 最擅长写新代码?
满屏都在吹AI一天写App,
真用一年我发现全错了
读老代码 · 碰屎山的勇气 · 提问方式变了 · 懂原理才用得动
码蜂奶爸
📦 5 Parts + Conclusion
👉 滑动
PART 01
别急着写新代码
它最会读老代码
PART 02
省的不是打字
是碰屎山的勇气
PART 03
它写得越快
你审得越慢
PART 04
提问方式变了
从要结果到要理解
PART 05
懂不懂原理
产出差得不是一点
PART ///
写在最后
工具省的是力气
嗡~ 码蜂奶爸!今天嗡:我用 AI 写了一年代码,最值钱的居然不是写代码。
写代码这十来年,我从单片机一路干到 iOS、Flutter。这两年身边全是“让 AI 干点活”的声音,我也没落下,AI 编程助手用满一年了。
最开始我跟你一样,满脑子想的都是“帮我写个功能”“帮我生成个页面”。真用满一年回头看,最值钱的那个场景,跟写新代码没多大关系。
今天把这 5 个反直觉的真相摊开讲。要是你还没入坑,或者刚入坑,希望能少走点我走过的弯路。
01
PART
它最擅长的是读老代码
READ OLD CODE
这个我花了大半年才反应过来。
市面上吹得最凶的,永远是“一句话生成一个 App”“十分钟搭一个网站”。话听多了,你会觉得 AI 的舞台是从 0 到 1 造新东西。
我自己的体感是反过来的。
我手头有个老项目,纯 Objective-C,前后迭代快十年了,早年的代码注释约等于没有,一个方法能写五百行。这种文件公司里没人愿意碰,谁碰谁头大。
后来我试着把一个 .m 文件整个丢给 AI,就问了一句:这段到底在干嘛。
几秒钟,它把逻辑给我捋清楚了。从入口到出口,哪一步改了什么状态,哪个判断分了几条路,讲得明明白白。连那个藏在角落里、只在某个机型上才会走到的分支,它都挑出来了。
从那以后我就不拿它当“写代码机器”用了。读老代码这事,它比我快,也比我耐心。它不会累,也不会因为这是屎山就翻白眼。
02
PART
省下的是碰屎山的勇气
THE COURAGE
接着说那摊屎山。
以前要动老项目,我得先做半天心理建设。倒不是改不动,是怕。怕改了这行,另一行跟着崩;怕某个看起来多余的判断,其实是在填陈年老 bug 的坑。
现在有了 AI 就不一样了。先让它通读一遍,把风险点标出来,我再动手。真改崩了,让它帮忙定位也快。
所以我这一年真正省下来的,是打字吗?不是。是那种“到底要不要去碰这摊屎山”的纠结。
这个账我以前从来没算过。现在回头看,它比打字贵多了。多少老项目就是这么被拖死的,代码本身没坏,坏在没人敢动。
03
PART
写得越快,你得审得越慢
REVIEW SLOWER
这条是我踩出来的教训,得坦白。
AI 写代码是真快,快到你觉得今天能多摸几条鱼。问题在后面:它写出来的每一行,你都得逐行审。
为什么?因为它会一本正经地写错。
有时候是 API 版本搞混了,有时候是内存管理那套给你偷工减料,狠的时候直接编一个不存在的库函数给你用。看着像模像样,一跑就报错。
举个我自己的真实例子。我让 AI 写个定时刷新的功能,它生成得飞快,但 block 里对 self 的引用处理,写错了一层:
// AI 生成的版本,看着挺对,其实埋了雷
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 repeats:YES block:^(NSTimer *timer) {
[self refreshData];
}];
问题在于 self 强引用 timer,timer 强引用 block,block 又回过头来强引用 self,三层扣成一个环。只要不调用 invalidate,这个环就一直不解,页面关掉了控制器还赖在内存里。
改法也简单,weak 一下把这个环打破:
// 我改完之后
__weak typeof(self) weakSelf = self;
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 repeats:YES block:^(NSTimer *timer) {
__strong typeof(weakSelf) self = weakSelf;
if (!self) { // 页面已经没了,顺手停掉
[timer invalidate];
return;
}
[self refreshData];
}];
这种错编译能过,跑起来也不报错,等你发现的时候,内存已经泄漏了一堆。
我的经验就一句话:AI 写得越快,我审得越慢。快枪手的准头,还得你自己校。
04
PART
问得最多的是为什么这么写
ASK WHY
用满一年,我发现自己提问的方式整个变了。
以前天天问“帮我写个 xxx”,现在问得最多的是“这段为什么这么写”。
问第一个,你要的是结果。问第二个,你要的是理解。
老项目里经常有那种“为什么要绕这么大一圈”的代码。新人看不懂,老人也未必记得清当年为什么这么写。AI 擅长的是帮你把这段“看着多余”的逻辑,还原出它当年的设计意图。
比如我遇到过一段老代码,做了好几层判断,看着啰嗦。丢给 AI 一问,它推测这几层是在规避某个 iOS 版本的兼容坑。顺着这个思路去翻提交记录,还真对上了。
理解了为什么,我才敢动它。理解不了,我就只能绕着走。绕来绕去,那摊屎山就永远长在那儿了。
05
PART
懂不懂原理,产出差得远
KNOW WHY
这是五个真相里,我觉得最要命的一条。
同一个人,同一个 AI 工具,为什么有人用出神效,有人用出一堆 bug?差就差在工具背后那个人,懂不懂原理。
AI 会一本正经地胡说八道。你要是不懂原理,你根本分不清它哪句是胡说。
它给你一个排序算法,说这个更快,你不懂复杂度,你就信了。它给你一个内存写法,说这样更省,你不懂内存,你也信了。最后它替你做了决定,锅还得你自己背。
这正好接上我之前那篇写的事:
往期回顾
可点击阅读
越用越发现,写代码的门槛是被它拉低了,但“判断代码对不对”的门槛,它给抬高了。
懂原理的时候它是杠杆,撬得动。你不懂原理,它就变成放大镜了,你的无知跟着一起放大,藏都藏不住。
///
LAST
写在最后
LAST WORDS
一年用下来,我对 AI 的感觉变了。刚上手那阵儿觉得神,后来觉得就是个工具,现在嘛,更像是搭伙干活的。
它不会替代你,但它会让你藏不住短板。它能替你干多少活,取决于你懂多少。
奶 爸 悟
AI 把写代码的门槛拉低了,却把判断代码对不对的门槛拉高了。
工具替你省的是力气,替你判断不了的,是方向。
我是码蜂奶爸,十年移动端开发,两个孩子的爸爸。在这里记录移动开发实战和程序员的成长,采技术之蜜,酿成长之糖。
既然看到这里了,如果觉得有用,随手点个赞、在看、转发三连吧。
THANKS FOR READING
嗡完收工,下期见~ 🐝