什么是琐碎抽象(泄漏抽象上下文)

时间:2018-12-05 21:44:59

标签: abstraction solid-principles

我正在阅读Leaky Abstraction Law 上的文章,并且读到某句话

  

在某种程度上,所有非平凡的抽象都是泄漏的。

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

谢谢。

2 个答案:

答案 0 :(得分:3)

我有一个感觉,这个问题将被标记为有争议的,但我将以任何方式尝试答案:

在本文的上下文中,抽象中的“泄漏”不是内存泄漏,而是受基础实现限制的抽象。

您尝试隐藏基础实现的次数越多,抽象变得越“琐碎”-它所做的工作就越多。

因此,在我看来,“琐碎”的抽象实际上并没有执行底层实现所能做的任何事情。

以本文的第一个示例为例-对IP的琐碎抽象将是一些库,该库使您可以轻松构建IP数据包,而无需将自己一个字节一个字节地放在一起,但是却无能为力-不重试,不用协议用于验证传递,无需像TCP那样重新组合数据包编号。

但是最后,由于本文没有提供明确的定义,因此旁观者认为“平凡”和“非平凡”。 您可以判断线的位置,以及在抽象实现变得平凡之前,需要在抽象实现之上添加多少抽象...

顺便说一句,这不是C ++特有的问题。

答案 1 :(得分:2)

平凡一词用于其常见的词典定义。它与C ++(或数学)无关。

  

优惠

     
      
  • 几乎没有价值或重要性。
  •   
  • 同义词:不重要,无关紧要,无关紧要,次要。
  •   

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