别急着加一层抽象

很多前端问题并不需要更多工具,先把真实的数据流和边界看清楚,答案通常会变短。

先描述问题,不描述工具

当一个组件开始变大时,我们很容易先想到拆分、抽象和引入状态管理。但这些动作只是手段,真正的问题可能只是一个状态没有被正确命名,或者一段数据在两个地方重复计算。

先把输入、变化和输出写下来,通常能发现最短的路径:

type SearchState = {
  query: string;
  results: string[];
};

const state: SearchState = { query: '', results: [] };

抽象的边界来自重复

一次出现的逻辑还不是抽象。第二次出现时,先确认它们真的有相同的变化原因;只有在第三次出现时,抽出来的名字才通常足够稳定。

小步验证比一次设计完整架构更便宜。让代码先保持可读,等重复和变化都被看见,再提取一个名字准确的函数。

留下一条可回退的路

好的重构不会让团队必须同时理解五个新概念。一次只移动一个边界,并在每一步都保留可以运行的结果,下一次修改就会更有把握。