1 分钟阅读

你的 Bug 可能正是别人的功能

软件工程的魔幻定律(4)


Part I-IV:架构与复杂度

Hyrum’s Law:足够多的用户会依赖你的 bug

这是 Google 工程师 Hyrum Wright 在大规模 API 维护实践中总结出的:

“With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.”


换句话说,你的接口文档声明的是契约,但用户依赖的是行为。 当用户足够多时,任何可观察的行为,包括 bug、响应时间的规律、错误消息的格式,都会被某个用户所依赖。

这条定律在 HackerNews 的讨论中被反复提及,因为它解释了为什么大规模系统的向下兼容如此痛苦:你想修复的那个 bug,可能正是某个用户的核心功能。Google 内部的 API 变更实践,很大程度上是在和这条定律正面交锋。