用途
该技能适用于审查或调整难以追踪的代码。它的核心主张是:可维护性等于读者理解代码所需付出的工作。LOC、圈复杂度和“整洁架构”都只是代理指标,真正重要的是读者负担。
主要能力
技能要求同时追踪两个独立维度:
- 需要追踪的层数:问题与答案之间的间接层级。
- 需要记住的状态:读者必须保存在脑中的隐藏或可变上下文。
两个维度相互独立。一个包含 50 个全局变量的扁平文件,可能与一个 6 层适配器栈一样难以推理。因此需要同时防范两者。该技能被描述为 /pstack-principle-guard-the-context-window 的人类类比:读者的工作记忆同样是有限的。
使用方式
技能给出以下具体做法:
- 折叠成本大于收益的层:只有一个调用者的包装器、没有第二实现的适配器、从未需要的推测性间接层,将其内联。
- 让相邻层改变抽象:如果一层只是重复相同的方法和参数,它只增加读者负担而没有压缩,应折叠这类直通层。
- 要求接口压缩:宽接口隐藏的复杂度很少,却让读者既要学表面又要学实现;优先选择能隐藏有意义决策的边界。
- 缩小状态作用域:优先纯函数(返回而非修改),局部变量优先于字段,字段优先于模块状态,模块状态优先于全局变量;尽量派生而非同步。
- 在边界处命名不变量,而不是在每个消费者处重复,让读者只学一次。
- 在新增层或状态之前,先问:它是否至少等量减少了别处的读者负担?
适用场景
适用于代码审查、重构决策、架构调整,以及任何需要判断“是否值得增加一层抽象或一份状态”的场合。
限制
资料未提供该技能的具体安装命令、运行环境、平台支持、收费方式或效果数据,这些信息暂未提供。