simplify · git:20260817.d4dfa41 · 2026-08-17 · sha256 cbb772316318f86e
simplify git:20260817.d4dfa41A
Immutable. This exact content is served forever at /api/v1/blob/cbb772316318f86e.
--- name: simplify description: 功能跑通之后、交付之前的收尾清理。按复用、质量、效率三张清单过一遍刚改的代码并修掉发现的问题。只碰这次改动的范围,不搞漫游式重构。 --- # 收尾清理 时机:功能已经工作、验证已经过了。先圈范围: ```bash git diff --stat # 这次到底动了哪些文件 ``` `[约束]` 只清理**这次改动碰过的**代码。别处的烂代码记下来告诉用户, 不要顺手改——收尾变漫游重构,diff 就没法审了。 ## 清单一:复用 - 新写的函数仓库里是不是已经有了?搜同名、同义词、相邻目录的 utils。 手搓的字符串处理、路径拼接、防抖节流、类型守卫是重灾区。 - 复制粘贴改两行的代码块,统一成一个带参数的。 ## 清单二:质量 - **冗余状态**:能从现有状态推导的值不要再存一份——存两份就要同步 两份,忘了同步就是 bug。 - **参数蔓延**:给函数加到第 5、6 个参数时,该重构签名了。 - **字符串当类型用**:仓库里已有常量、枚举、union 的地方不要写裸 字符串。 - **废话注释**:解释「代码做了什么」的删掉(命名已经说了);叙述 本次改动的删掉(那是 commit message 的事)。只留「为什么这么做」 和代码表达不了的约束。 - **只为这次改动服务的兼容垫片**:没人用的旧签名、多余的重导出、 「以防万一」的分支。 ## 清单三:效率 - 重复计算、循环里的重复 IO、N+1 查询; - 相互独立的异步操作在串行等待(能并发的并发); - 无界增长:只进不出的缓存、数组、事件监听器; - 读整个文件只为用一小段、拉全量列表只为过滤出一条。 ## 修的时候 - 一次一类,每改完一批跑一次测试——清理**不该改变行为**,测试是 唯一的证明。 - 发现不值得修的就跳过并说一句为什么(比如要大动干戈)。清单是 工具,不是任务。