跳到主要内容

让 AI 重写了我最烂的代码

园园学前端
园园学前端

· 阅读约 2 分钟

第 68 天。本来今天该继续练组件通信,结果干了件别的事。

事情是这样的。排班表还记得吧?就是上次那个接送排班表。最近想给它加个"换班拒绝"的功能——就是家长A申请换班,家长B那边有个按钮能拒绝。

然后我打开自己一个月前写的代码。怎么说呢……那头像我写的,但逻辑链长得不像人能想出来的。

一个按钮,上面叠了三层判断:showModal && editingUser !== currentUser && !locked。这其实还没完,后面状态还同时改三个变量,一个管弹窗,一个管换班状态,一个管历史记录。它们互相依赖,改了一个另外两个就闹脾气。

当时写的时候是通的。我发誓它跑过。但今天打开,我看了整整十分钟,不敢碰。加个拒绝按钮意味着我要顺着那根线找到第四个 if,然后往里面再嵌一层。

这代码谁写的?我写的。我不认识。

  • 给老大预约了周六的牙科检查
  • 接园时间记在日历上了

后来我就干了今天这事:把那段代码整段复制,贴给 AI。打了一行字:「这段太乱了,能重写吗,功能别变」。没了。

它先问我功能逻辑是啥。我说你自己读,我写的全在里面。它说好,然后开始读。

读了三分钟吧,给了一段新代码。结构完全不一样:换班信息变成了一个数组,数组里面有状态字段,按钮判断变成了一个 lookup 表。原来看不懂的状态流转,变成了找一下当前记录在哪个状态,然后直接返回这个状态下能做什么。

第一次跑直接报错。报错信息里有个变量名我不认识。我一查,它给我改名了,原来的 selectedShift 被拆成了 draftShiftconfirmedShift。我贴回去报错,它说"抱歉,漏了个引用",改完就能跑了。

最爽的是加那个拒绝按钮的反倒是后头。我本来以为要跟原来一样顺着链摸,结果它在重写方案里给我留了个口子——照着已有的"通过换班"抄一遍,改几个字就完事。五分钟。

我盯着屏幕看了好一会儿。

后来晚上又看了一眼它重写的代码。状态合并那块我还没吃透,看了一遍,像是懂了,又像没懂。跟上次 props 那次一样。明天捡起来再看看吧。

  • 明天:把重写后的代码抄一遍,边抄边标注释

不写了,老大在叫我了,一声比一声响。收工。

园园学前端
园园学前端

两个娃的妈,碎片时间自学前端打卡中。四十分钟也是四十分钟。

查看主页 →