什么是琐碎抽象(Leaky abstraction Context)

What is Trivial Abstraction (Leaky abstraction Context)

我正在阅读 Leaky Abstraction Law 的一篇文章,我读到一些内容

All non-trivial abstractions, to some degree, are leaky.

那么琐碎的抽象意味着什么?

谢谢。

我觉得这个问题会被标记为争论性问题或其他问题,但我会尝试以任何方式回答:

在本文的上下文中,抽象中的 "leak" 不是内存泄漏,而是抽象受到底层实现的限制。

您越是尝试隐藏底层实现,"trivial" 抽象就会变得越少 - 它所做的工作就越多。

所以,在我看来,"trivial" 抽象是一种除了底层实现之外实际上不做任何事情的抽象。

以文章的第一个例子为例——IP 的一个简单抽象是一些库,它可以让你轻松构建 IP 数据包,而不需要你自己一个字节一个字节地组合在一起,但不会做任何其他事情——不重试,没有用于验证交付的协议,没有像 TCP 那样按顺序重新组装的数据包编号。

不过最后由于文章没有给出明确的定义,所以"trivial"和"non trivial"是仁者见仁,智者见智。 您判断界限在哪里,以及在抽象实现变得不平凡之前需要在抽象实现之上添加多少抽象...

顺便说一下,这不是一个特定于 C++ 的问题。

单词琐碎用于其通用词典定义。它与C++(或数学)无关。

Trivial

  • of little value or importance.
  • synonyms: unimportant, insignificant, inconsequential, minor.

在编程中,单词 toy 通常用于描述琐碎的应用程序,例如短语 a toy program。在这种情况下,琐碎的抽象将是玩具抽象,仅用于演示目的:不真实或实用。