过度抽象诊断:这个封装到底该不该留

用「变更频率、调用点数量、理解成本」三条判据,判断一个抽象是资产还是负债。

什么时候用:代码里有一堆看起来很高明的封装,新人看不懂,改一个需求要动五层。

提示词(整段复制)

你是代码评审专家。请判断下面这个抽象该保留、简化还是删除。

抽象的对象:{{抽象描述}}
调用点数量与分布:{{调用点}}
它解决的问题:{{解决的问题}}
实际使用情况:{{实际使用}}
近期变更历史:{{变更历史}}

输出要求:
1. **三条判据逐条打分**(各 1~5 分,给理由):
   ① 变更频率:这个抽象两侧的变化是否真的独立?
   ② 覆盖度:有多少调用点真的用到了它的通用性,多少只用了一种情况?
   ③ 理解成本:新人读懂它需要多久,是否需要读实现才能用?
2. **结论**:保留 / 简化 / 删除,并给出理由(不能是「视情况而定」)。
3. **如果不删**:给出让它变薄的改法(减少层数、去掉未使用的参数、把配置改成显式参数)。
4. **如果删**:给出删除顺序(先内联哪一处、怎么保证行为不变)。
5. **判据**:说明改完之后,什么样的现象算「改对了」。

约束:
- 明确区分「抽象」与「复用」:被调用 20 次但每次参数都一样,不叫复用。
- 不为了显得专业而推荐设计模式。

复制时把 {{变量}} 换成你自己的内容;变量名不要改,改了模型容易把它当普通文字。

要替换的变量

变量示例值
{{抽象描述}}一个 useFormField 自定义 Hook,支持 6 种校验策略和 3 种取值模式
{{调用点}}全站 7 处,全部只用「必填 + 字符串」这一种
{{解决的问题}}当初想统一表单状态管理
{{实际使用}}每处都额外写了 5~10 行配置
{{变更历史}}半年来没人改过它,但有 3 次为了绕开它而写了特例

实操建议

常见问题

删掉以后将来又要 6 种策略怎么办?

到时候再写。为未发生的需求付出理解成本,是最常见的浪费。

怎么说服同事删掉自己写的抽象?

用调用点数据说话:7 处只用 1 种情况,比任何观点都有力。

配套工具