不要将你的 API 设计得过于简单

原创
2023/05/25 22:05
阅读数 98

关于软件工程的真相

框架永无止境

有多少框架、库和服务的存在仅仅是为了让你编写更少的代码?几乎所有的框架都是如此。

为什么我们有这么多框架,每年还会出现一个新的?这是因为一个框架试图让系统变得简单,在这个过程中却导致了性能问题或编码上的不便。

一个沮丧的用户说:“我要写一个彻底解决这个问题的新框架。”他写了一个更快的新框架。只是时间问题,另一个沮丧的用户就会发现另一个问题,并写出一个新的框架。

这是一个无休止的恶性循环。

如果你的系统很复杂,不要试图简化它

你的系统很复杂。这既不是好事也不是坏事,有些系统本质上就是复杂的,因为它们天生如此。

如果你试图简化系统,那就是违背它的本质。洁净代码运动对你没有帮助,就像面向对象编程运动一样。

不要认为将系统分解为小部分会使它变得简单。现在你有很多团队,他们被切割成了独立的部分,以为这样就简单了。无知是工程师的敌人。系统不能通过部分来理解。它要么全部理解,要么一无所知。

这是你无法赢得的战斗。

不要将API设计得过于简单

API代表应用程序编程接口。它们与系统进行接口交互,接受系统的本真模样,包括它的美丽、丑陋、简单和复杂的部分,以及其中的错误和特性。

不要假装你的系统是简单的,通过暴露一个仅展示其美好一面的裸露API。你在向客户提供虚假的抽象,最终这种抽象会泄漏,引发问题,并对客户产生不良影响。

构建一个API来抽象复杂性,使客户端易于使用,就像打破鸡蛋壳,让小鸡容易出来一样。然而,最终小鸡将无法独立生存,调用该API的前端也将如此。

客户端最终会遇到意想不到的副作用,例如性能延迟、高CPU使用率、高内存使用率或高网络使用率。

抽象总是会泄漏。

设定默认值是一种逃避责任的行为

你可以暴露系统的真实本质,但可以设置默认值,认为这些默认值适用于大多数情况。虽然有用,但大多数客户端会选择走捷径,使用默认值而不去理解它们。

他们又回到了同样的沉船上,只不过这艘沉船上有一艘救生艇,开发人员可以依附其上。他们查看默认值并理解出了问题所在,并在必要时进行覆盖。

如果你将系统暴露出来,这个问题本不会发生。

如果你愿意,去除复杂性

你可以尝试消除系统的复杂性,而不是隐藏它。你可以用一个看起来简单的部分来替代它。这样做可能会解决一些问题,但请注意,新的复杂性可能会出现。一个新的怪兽诞生了。旧怪兽可能被杀死,但它可能仍然存在。

亲爱的客户,你可以使用一个简单的后端API,但请理解这个API可能并不真的简单。不要认为它理所当然,相反,深入了解它的复杂性,理解它是如何构建的。

通过了解API,你不仅会欣赏它,而且在API所创建的抽象泄漏到你这里时也会做好准备。你将准备好保护你的前端堡垒,也可以为修复后端做出贡献。

总结

拥抱复杂性,理解它并与之共同工作。这可能会开花结果,带来有效的性能,也可能会意外地诞生一个完全自由且真正完美的全新系统。

一个真正简单的系统。

这篇文章中的所有内容都不构成建议或行动号召。把它看作是一束在黑暗房间里首次照亮的蜡烛光。

如果你喜欢我的文章,点赞,关注,转发!

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部