第 68 天。本来今天该继续练组件通信,结果干了件别的事。
事情是这样的。排班表还记得吧?就是上次那个接送排班表。最近想给它加个"换班拒绝"的功能——就是家长A申请换班,家长B那边有个按钮能拒绝。
然后我打开自己一个月前写的代码。怎么说呢……那头像我写的,但逻辑链长得不像人能想出来的。
一个按钮,上面叠了三层判断:showModal && editingUser !== currentUser && !locked。这其实还没完,后面状态还同时改三个变量,一个管弹窗,一个管换班状态,一个管历史记录。它们互相依赖,改了一个另外两个就闹脾气。
当时写的时候是通的。我发誓它跑过。但今天打开,我看了整整十分钟,不敢碰。加个拒绝按钮意味着我要顺着那根线找到第四个 if,然后往里面再嵌一层。
这代码谁写的?我写的。我不认识。
- 给老大预约了周六的牙科检查
- 接园时间记在日历上了
后来我就干了今天这事:把那段代码整段复制,贴给 AI。打了一行字:「这段太乱了,能重写吗,功能别变」。没了。
它先问我功能逻辑是啥。我说你自己读,我写的全在里面。它说好,然后开始读。
读了三分钟吧,给了一段新代码。结构完全不一样:换班信息变成了一个数组,数组里面有状态字段,按钮判断变成了一个 lookup 表。原来看不懂的状态流转,变成了找一下当前记录在哪个状态,然后直接返回这个状态下能做什么。
第一次跑直接报错。报错信息里有个变量名我不认识。我一查,它给我改名了,原来的 selectedShift 被拆成了 draftShift 和 confirmedShift。我贴回去报错,它说"抱歉,漏了个引用",改完就能跑了。
最爽的是加那个拒绝按钮的反倒是后头。我本来以为要跟原来一样顺着链摸,结果它在重写方案里给我留了个口子——照着已有的"通过换班"抄一遍,改几个字就完事。五分钟。
我盯着屏幕看了好一会儿。
后来晚上又看了一眼它重写的代码。状态合并那块我还没吃透,看了一遍,像是懂了,又像没懂。跟上次 props 那次一样。明天捡起来再看看吧。
- 明天:把重写后的代码抄一遍,边抄边标注释
不写了,老大在叫我了,一声比一声响。收工。