1
10
不完全是, 提供正确的抽象级别就是知道从较低级别传递给您的信息有多少。 假设您正在编写一个高级HTTP库。也许你会提供一个get()方法,一个head()方法,一个post()方法etcetera,但是你不需要提供对底层套接字的访问,因为你是在从用户那里抽象这些细节。 在您使用的套接字下面,有一些您不需要处理的抽象层。(您只访问下面一个层的抽象,除此之外,处理下面的层是该层的工作,以此类推)。 例如,您不关心滑动窗口流控制协议,因为TCP正在抽象这些细节。
——
相反,如果您的编码水平太低,那么您将在实现细节中丢失。回到我的HTTP示例,如果您只想对服务器运行一个GET请求,并且在代码中实现一个TCP握手,那么您可能想要尝试使用一个库,或者将您的TCP代码抽象到一个库中,并通过它与之接口。
——
从一个角度来看,那些重要的细节在另一个角度上根本不重要。 他把一本书放在桌子上,给学生们分配角色,比如“读者”、“书商”、“作者”、“图书管理员”或“图书托运人”,并问我们在这个角色中,我们认为这本书的哪些细节对我们很重要。根据分配给一个人的名单,他们的答案差异很大。 这表示一个抽象。只需要那些对你来说很重要的细节,并且让所有其他的细节都在别处处理(或者只是顺其自然)。 |
2
3
我不这么认为。 对我来说,抽象是泛化的同义词。越是抽象的东西,作者越是试图以一种更容易扩展和应用到新问题的方式来思考问题。 一般来说,更大的抽象需要更多的开发和理解工作。如果你是一个开发人员,并且你被赋予了一个高度抽象的框架,那么你将不得不从框架的角度来思考,而不是使用你的常识可能建议的概念。 所以,就像在您的示例中一样,汽车是一个非常低的抽象级别。滚动车辆可能是更高的车辆,而运输可能是最抽象的。 正确的选择取决于您希望应用类的范围有多广,以及您希望它们有多容易理解。 |
3
1
我认为抽象的一个危险方面是它擦除或隐藏现实或它所代表的设计的能力。你应该始终保持一个合理的距离,你所代表的和代表。“合理”是指外部开发人员很容易理解为什么没有在这个特定的项目上编码。 乔尔·斯波斯基说,谈论 "architecture astronauts" :
|
Schadre · C-plus编码错误 2 年前 |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
amirreza870 · Python OOP-更改类文本 2 年前 |
A_K · 使用cat或打印方法打印部分内容的子集闭包 2 年前 |
Mo Fatah · 如何使用Python类打印数独板? 2 年前 |