【问题标题】:What is Trivial Abstraction (Leaky abstraction Context)什么是琐碎抽象(泄漏抽象上下文)
【发布时间】:2019-05-07 13:09:08
【问题描述】:

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

所有重要的抽象在某种程度上都是有漏洞的。

那么琐碎抽象是什么意思呢?

谢谢。

【问题讨论】:

    标签: abstraction solid-principles


    【解决方案1】:

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

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

    您尝试隐藏底层实现的次数越多,抽象就越不“琐碎” - 它所做的工作就越多。

    因此,在我看来,“微不足道”的抽象是指除了底层实现之外并没有真正做任何事情的抽象。

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

    但归根结底,由于文章没有给出明确的定义,“琐碎”和“非琐碎”在旁观者眼中。 您判断界限在哪里,以及抽象需要在抽象实现之上添加多少才能变得不平凡......

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

    【讨论】:

    • 所以这里的琐碎一词与C++社区中特殊成员函数的“琐碎”无关?当我看到琐事时,我正在考虑那些规则,POD 和三/五规则全部结合在一起:D
    • 嗯,这只是我对这篇文章的理解。作者没有讨论 C++ 结构或任何 C++ 特定内容。当他谈到 C++ 字符串和指针运算时——从我看过的 Bjarne Stroustrup 的一些讲座中,我认为 Bjarne 会不同意。 C++ 现在每 2-4 年就会有一个新标准,他们正试图以报复的方式扼杀原始指针。
    【解决方案2】:

    琐碎这个词用于其常用的字典定义。它与 C++(或数学)无关。

    琐碎

    • 没有什么价值或重要性。
    • 同义词:不重要、无关紧要、无关紧要、次要。

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

    【讨论】:

    • 谢谢。所以这里的非平凡意味着重要,所以他在谈论胖/复杂的抽象?
    猜你喜欢
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    相关资源
    最近更新 更多