gpt4 book ai didi

oop - "getting the right level of abstraction"是什么意思?

转载 作者:行者123 更新时间:2023-12-03 18:20:52 26 4
gpt4 key购买 nike

我读过关于编程中一项艰巨的工作是如何“在正确的抽象级别”编写代码。尽管抽象通常将细节隐藏在一个层后面,但在正确的抽象级别上编写一些东西基本上可以使实现决策的方法正确吗?例如,如果我要编写一个代表汽车的类,我将为轮子等提供属性,但如果我被要求为没有轮子的汽车编写一个类,我不会提供轮子,因此没有“驾驶”汽车的方法。这就是正确抽象的意思吗?

谢谢

最佳答案

不完全的,

提供正确的抽象级别是知道有多少来自较低级别的信息要向上传递到您的级别。

假设您正在编写一个高级 HTTP 库。也许你会提供一个 Get() 方法、一个 Head() 方法、一个 Post() 方法等等,但是你不需要提供对底层 Sockets 的访问,因为你正在从用户那里抽象出这些细节。

在您正在使用的 Socket 之下,有一些您不需要处理的抽象层。 (你只能访问你下面的一个抽象层,除此之外,处理它下面的层是该层的工作,等等)。

例如,您不关心滑动窗口流控制协议(protocol),因为 TCP 正在抽象出这些细节。

--
如果您为了达到您想要达到的目的而在太高的抽象层上进行编码,您将遇到多个实现细节。当你与图书馆争夺控制权时,这表明你的工作水平可能太高了。

相反,如果您的抽象级别太低,您将迷失在实现细节中。回到我的 HTTP 示例,如果您只想对服务器运行 Get 请求并且在代码中实现 TCP 握手,那么您可能想要尝试使用库或将 TCP 代码抽象到库中并通过它与之交互。

--
在我上这门课的一个类上,老师有一种有趣的方法来解释抽象。他让我们将它们简单地视为对象或场景的“观点”或“视角”。

从一个角度看很重要的细节从另一个角度看根本不重要。

他将一本书放在 table 上,并为学生分配了角色,例如“读者”、“书商”、“作者”、“图书管理员”或“图书托运人”,并询问我们认为这本书的哪些细节对我们很重要在那个角色中。根据分配给一个人的点数,他们的答案千差万别。

这代表了一种抽象。只需要那些对你很重要的细节,而让所有其他细节在别处处理(或干脆搁置一旁)。

关于oop - "getting the right level of abstraction"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4056614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com