问题标签 [abstraction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
22 回答
154270 浏览

encapsulation - 抽象 VS 信息隐藏 VS 封装

你能告诉我软件开发中的抽象信息隐藏有什么区别吗?

我很困惑。抽象隐藏了细节实现,而信息隐藏抽象了某物的全部细节。

更新:我为这三个概念找到了一个很好的答案。请参阅下面的单独答案以获取从那里获取的几个引文。

0 投票
18 回答
1628 浏览

css - 远离 CSS 的抽象

许多框架试图从 HTML(自定义标签、JSF 组件系统)中抽象出来,以便更轻松地处理特定的鱼锅。

你们有没有使用过类似的概念应用于 CSS 的东西?可以为你做一堆跨浏览器魔法的东西,支持变量(为什么我每次想要那种颜色时都必须输入#3c5c8d),支持计算字段(被“编译”成 CSS 和 JS)等等。

或者,我是否正确地考虑了这一点?我是否试图将一个非常方形的块推过一个非常圆的孔?

0 投票
2 回答
375 浏览

.net - 是否有 .NET OS 抽象层来使 OS 调用跨平台工作?

我真的很想编写可以在任何平台(PC、Linux 和 Mac)上运行的 .NET 应用程序。我并不真正关心 UI 功能,因为这些主要是后台服务。我听说过 MONO,它允许您编写在 Mac 和 Linux 上运行的 .NET 应用程序,但我希望能够编写一个应用程序,在为 Windows 编译时将作为服务运行,而在为 Linux 编译时将像 UNIX 等价物一样运行。我也希望能够将东西存储在注册表中并进行这项工作。有没有办法编写像这样真正与操作系统无关的代码?...而且不要说我应该让它在网络上运行!:)

0 投票
9 回答
681 浏览

language-agnostic - 如何处理复杂的事情?

您知道代码中对项目至关重要但可能需要大量时间才能完成的特定部分吗?您是否曾经觉得您宁愿从事其他事情(可能不太重要)或根本不编写代码而不是从事那部分工作?你那么努力避免并使用你知道的每一个懒惰的技巧来延迟它不可避免的实施?

现在,我可能只是懒惰,但我总是不得不处理这样的代码。写一些我不想写的东西(如果你是为了好玩而没有得到报酬,那就更糟了!)。一个大型系统需要花费大量时间才能进入一个阶段,在该阶段您可以获得任何有用的结果或表明它正在工作的迹象。你如何开始编写这样的代码?大多数人可能会建议分而治之和类似的架构技术,但这与您如何做无关;这是关于你如何让自己开始做这件事的。你会采取的第一步是什么?

0 投票
2 回答
9997 浏览

database - 在保持抽象的同时将格式化文本存储在数据库中

您将如何将格式化的文本块(换行符、制表符、列表等)存储在数据库(没有具体内容)中以在 Web (XHTML) 上显示,同时保持一定的抽象级别,以便数据可以用于其他应用程序或网站的结构是否会在未来发生变化?

0 投票
11 回答
535 浏览

architecture - 你如何让人们重视抽象和灵活性而不是“完成它”?

当其他人希望跳过官方接口并直接访问底层实现细节时,我有时会遇到困难。

他们认为这样做可以让他们更快地解决问题。我认为这样做会导致我们的架构变得更加紧密耦合,并且随着新需求的出现难以改变。

我指出了当前设计中的所有工作以及设计理念和灵活性的价值,尝试维护和更改脆弱代码的成本,封装和数据隐藏和分层架构的价值以及健壮性,所以规范的微小变化会导致代码的微小变化。他们说“但这会更容易。”

你怎么对付这些人?

0 投票
2 回答
399 浏览

.net - 在企业应用程序中抽象数据连接层和表示层

我们正在构建一个企业应用程序,我们将在其中整合多个用户界面平台(即 ASP.net webapp、Windows 应用程序,以及未来的移动应用程序)和多个后端数据库平台(即 SQL Server、XML、Oracle)。另一个必要条件是这些后端数据库要么集中并通过 Web 访问,要么本地化在客户端计算机上,偶尔同步到中央服务器。

任何人都可以就我们如何抽象用户界面层和数据层提供建议,以便我们可以更简单地在各种 UI 和 DB 的各种选择之间创建即插即用的适应性?例如:在一种情况下,我们可能有一个通过互联网在中央服务器上运行的网络应用程序,我们可能有远程机器通过一个 Windows 应用程序运行本地化副本。在预定的时间间隔内,我们希望所有机器同步,以便它们都可以拥有近乎实时的数据。

我们还需要有关处理所涉及的各种连接字符串的建议,以便在任何一个应用程序上需要更改的唯一设置是“本地”或“远程”,然后它们将确定必要的连接字符串。

0 投票
8 回答
17963 浏览

computer-science - Level of Indirection solves every Problem

What does the quote "Level of Indirection solves every Problem" mean in Computer Science?

0 投票
4 回答
735 浏览

c# - 单范式 OOP 会导致抽象倒置吗?

对于那些不熟悉这个概念的人来说,抽象反转是在高级构造之上实现低级构造,并且通常被认为是一件坏事,因为它增加了不必要的复杂性和不必要的开销。当然,这是一个有点不精确、主观的定义。

在您看来,使用单一范式 OOP 语言进行编程,其中所有内容都必须是类的一部分,并且不会暴露诸如指针之类的东西,例如 Java 或 C#,是否不可避免地会导致抽象反转?如果是,在什么情况下?

0 投票
8 回答
2351 浏览

performance - 最坏的抽象反转

你今天在编程中看到的最糟糕的(由于流行或严重性)抽象反转的例子是什么?

对于那些不熟悉这个概念的人,抽象反转是在高级构造之上实现低级构造。更准确地说,假设您有构造 A 和 B。B 在 A 之上实现,但 A 没有在任何地方公开。因此,如果您真的需要较低级别的构造 A,那么您最终会在 B 之上实现 A,而 B 首先是根据 A 实现的。请参阅http://en.wikipedia.org/wiki/Abstraction_inversion