该技能适用于评审或改造难以追踪的代码时。
用途:把“可维护性”具体化为读者理解代码所需付出的工作量,并用两条独立轴线来度量:追踪层数(从问题到答案之间隔了多少间接层)和需记忆状态(读者必须在脑中保持的隐藏或可变上下文)。行数、圈复杂度、“整洁架构”等只是代理指标,读者负担才是关键。
主要能力:
- 折叠得不偿失的层级:只有一个调用方的包装器、没有第二实现的适配器、从未需要的推测性间接层,直接内联。
- 让相邻层改变抽象:只是重复相同方法和参数的层只会增加读者负担而不带来压缩,应折叠透传层。
- 要求接口压缩:宽接口隐藏的复杂度很少,读者既要学表面又要学实现;应优先选择能隐藏有意义决策的边界。
- 缩小状态作用域:优先纯函数(返回而非修改)、局部变量优先于字段、字段优先于模块状态、模块状态优先于全局;用派生代替同步。
- 在边界处命名不变量,而不是在每个使用者处重复,让读者只需学一次。
- 新增层级或状态前先问:它是否至少等量减少了别处的读者负担。
使用方式:在评审或重构难追踪的代码时,沿两条轴线检查:数一数问题与答案之间的层级,找出读者需要记住的隐藏状态;据此内联多余层级、折叠透传层、压缩接口、缩小状态作用域。
检验标准:新读者能否在30秒内回答“X从哪来”和“什么能改变X”?若不能,就削减层级或削减状态。
适用场景:代码评审、重构、架构设计中的抽象与状态决策。
限制:资料未提供具体工具、安装命令或自动化实现方式;该原则为启发式指导,具体阈值(如30秒检验)需结合团队实际判断。