其他
当同一概念有多种实现或特例不断累积时,用简化级联消除多个组件
在实现同一概念多种方式、特例累积或复杂性失控时,寻找一个统一洞察使多个组件变得不必要。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
当同一概念有多种实现或特例不断累积时,用通用
解决思路
- 寻找能消除多个组件的统一原则,核心是问‘这是否都是某个东西的特例?’,以大幅坍缩复杂性。
- 若同一事物以 5+ 种方式实现,则抽象出共同模式。
- 若特例列表不断增长,则找到一般情况。
- 若规则复杂且带例外,则找到没有例外的规则。
- 若配置选项过多,则找到适用于 95% 场景的默认值。
- 寻找相似概念的多个实现。
- 寻找到处存在的特殊处理。
- 留意‘我们需要不同地处理 A、B、C、D……’这类表述。
- 留意带许多例外的复杂规则。
- 问:‘如果它们在底层都是同一件事会怎样?’
- 列出变体:哪些东西以多种方式实现?
- 找到本质:底下的相同点是什么?
- 提取抽象:什么是领域无关的模式?
- 测试它:所有情况是否都能干净地适配?
- 衡量级联:有多少东西变得不必要?
- 检查是否出现‘我们只需要再加一个情况……’并不断重复的红旗,若出现则重新寻找统一模式。
- 检查是否出现‘这些都很相似但不同’的红旗,若出现则怀疑它们其实相同。
- 检查是否出现重构像打地鼠(修一个、坏另一个)的红旗,若出现则寻找统一模式。
- 检查是否出现配置文件不断增长的红旗,若出现则寻找可消除的配置。
- 检查是否出现‘别碰那个,很复杂’的红旗,若出现则怀疑复杂性隐藏了模式。
- 以简化级联追求 10 倍收益,而不是 10% 的改进。
- 优先选择一个有力量的抽象,而不是十个聪明的 hack。
- 认识到模式通常已经存在,只需要被识别。
- 用‘我们可以删除多少东西’来衡量简化效果。
- 级联示例:若分别处理 batch、real-time、file、network 数据,问‘所有输入是否都是流,只是来源不同?’若成立,用一个流处理器 + 多个流源替代 4 个独立实现。
- 级联示例:若分别实现会话跟踪、限流、文件校验、连接池,问‘它们是否都是按实体的资源限制?’若成立,用一个 ResourceGovernor 带 4 种资源类型替代 4 个自定义执行系统。
- 级联示例:若分别做防御性拷贝、锁、缓存失效、时间耦合,问‘是否可把所有东西视为不可变数据 + 变换?’若成立,用函数式编程模式消除整类同步问题。