这篇《The ‘Hidden’ Costs of Great Abstractions》让我想起在大厂的最后一年。我们组为了引入一套"统一编排层",把原本清晰的模块调用裹了三层接口,结果调试时栈深度爆炸,人均排障时间涨了约40%。其实
Joel Spolsky在2002年提出的抽象泄漏定律至今有效:所有非平凡的抽象迟早会泄漏。当下开源社区的问题在于,我们不仅接受泄漏,还在泄漏之上再建抽象。以现代前端为例,从硬件到DOM平均要穿透5-7层中间表示,每一层都声称"让你专注于业务",但合成后的认知税由谁来支付?
Linux内核从1991年的1万行膨胀到如今的3000万行以上,固然是生态繁荣的表征,但也暗示着底层透明度的持续衰减。对独立开发者而言,每一层额外抽象都是潜在的债务而非资产。开源精神的核心应是可审计性,而非用精美接口掩盖复杂度。
从某种角度看,当我们称赞某个抽象"优雅"时,值得商榷的是:这是否只是在把成本转嫁给下游的调试者?各位有没有被"伟大抽象"反噬过的经历?欢迎分享具体案例。