overreactedby Dan Abramov

为变化而优化

December 12, 2018

什么才是优秀的 API?

“优秀”的 API 设计令人印象深刻且毫不含糊。它鼓励代码可读、正确且高效,并帮助开发者自然而然地“掉进成功的陷阱”。

我把这些设计方面称为“一阶”特性,因为它们通常是库开发者最先关注的内容。你可能需要在这些方面做出一些妥协和权衡,但至少它们始终在你的脑海中。

然而,除非你是在为火星探测器编写代码,否则你的代码很可能会随着时间发生变化,API 的使用者的代码也同样如此。

我所认识的最优秀的 API 设计者并不会止步于可读性等“一阶”特性。他们同样,甚至更加关注我所说的“二阶”API 设计:即使用这个 API 的代码,随着时间推移会如何演进。

需求的细微变化,可能会让最优雅的代码瞬间崩塌。

“伟大”的 API 能预见到这一点。它们预见到你可能想要移动某些代码、复制粘贴某个部分、重命名、将特殊情况统一为通用的可复用辅助函数、将抽象拆解回具体场景、添加临时方案、优化性能瓶颈、丢弃某一部分重新开始、犯错、在因果之间定位、修复 bug、审查修复结果。

优秀的 API 不仅让你轻松“掉进成功的陷阱”,还能帮助你一直留在那里。

它们为变化而优化。

Pay what you like

Edit on GitHub