2013-11-05 91 views
3

我听到很多人在设计软件时都建议,围绕对第三方API库的调用构建抽象层是一种很好的做法。抽象使用的API是否是一种好的做法?

所以,如果我正确理解这一点,比如说我正在用jQuery构建一个web应用程序。我需要围绕jQuery构建一个抽象层,并让我的应用程序代码的其余部分使用我的抽象API与直接调用jQuery。

我的问题:

  1. 这是一个有效的建议吗?
  2. 这不会增加代码的复杂性吗?
  3. 这条规则是否有例外情况?
  4. 这是否不会取消抽象和可重用性的好处?
  5. 解决方案看起来是否过度设计,这层有意义吗?

在此先感谢!

+2

我认为像jQuery这样广泛的东西,你是相当安全的,直接使用它。该建议可能更多地针对供应商插件API,特别是在您编写DLL接口时。 – paddy

+0

我们编写的代码可能不是100%完美的,但在复杂性,抽​​象级别,可读性,可重用性 –

回答

2

jQuery是一个高度可用的API,旨在在“应用程序代码”级别非常有效地工作。它不应该需要抽象&你不会从中受益。

您可能会发现可用于构建一些“库组件”或其上的一小部分库代码 - 分析特定于您的应用程序的重复UI组件的应用程序级使用情况&。

一般来说,“抽象一切”的建议听起来大多是错误的。抽象用于你可能或可能必须互换的东西。不需要的抽象被误导,没有用&不过是一种成本,否则。

jQuery已经是一个抽象层,所以谁告诉你这个不知道他们在说什么的第一件事。

除了抽象,比其他库更常见的情况是,它们是在“库实现”或SPI级别设计的,低于应用程序代码运行的级别。

在这种情况下,构建您自己的库代码/类(例如读取器,编写器,构建器和其他“任务导向”类)以供应用程序代码使用,级别的API,并开车到图书馆。但是,这不是抽象的。

三种最常用的地方实际使用抽象为:

  1. 数据库可移植性 - 使用Hibernate的,不依赖于特定的DB-发电机;和
  2. 应用程序服务器/操作系统可移植性。 Java和servlets/JSP给你两个。
  3. 配置。例如,通过像Spring这样的框架。
1

如果你正在构建一个相当复杂的Web应用程序(UI,交互和数据量大),jQuery本身就是一个非常好的DOM操作和AJAX库,不会为你提供所需的工具以可维护的方式构建您的客户端代码。

我想你听到人们谈论抽象是已经开始出现在过去的几年中,如BackboneKnockoutAngularEmber,其中使用最多的(或者可以使用)jQuery的各种客户端框架对于它擅长的东西,主要是DOM操作。

这些框架中的任何一个都将为您提供所需的工具,以模块化和可维护的方式构建您的代码,而无需重新发明轮子。如果您的Web应用程序非常复杂(或者随着时间的推移可能会变得复杂),我强烈建议您将上述内容视为一个起点。

相关问题