受到这个问题的启发,使用第三方库-总是使用包装器?,我想知道人们实际上认为什么是第三方库。
PHP示例:
如果我使用Zend框架构建应用程序,是否应该将Zend框架库视为第三方代码?
来自C#的示例:
如果我正在构建桌面应用程序,是否应该将所有.Net类视为第三方代码?
来自Java的示例:
我是否应该将JDK中的所有库视为第三方库?
有些人说,如果一个库是稳定的,并且不会经常改变,那么就不需要包装它。然而,我无法理解如何测试依赖于第三方代码的类,而不包装它。
发布于 2012-11-06 14:58:18
您的示例都是第三方代码,但您不应该为它们编写包装器。它们是大型的、成熟的项目,具有稳定和规划良好的API。
包装器的需要是在代码和库之间提供一个抽象层。只有当您发现库没有为您所做的特定事情提供良好的API时,您才需要这种抽象。然后,您可以创建包装器来简化自己的代码,并隐藏API调用是尴尬的事实。
如果使用依赖项注入,代码将是可测试的。在单元测试中,您可以使用模拟对象交换库依赖项,从而使您能够隔离测试中的代码。
发布于 2012-11-06 15:54:17
包装库的目标是打破您自己的代码对该库的依赖,以便启用:
隔离第三方库和框架只是隔离更改的一个子集。
发布于 2012-11-06 14:57:00
我不会把标准库的成员当作第三方代码--它们毕竟是标准的,可以合理地假定在您正在使用的平台上是可用的和实用的。
至于像Zend这样的东西,我认为如果你采用不同的框架,你可能需要重写这个程序。老实说,我不会包装太多的东西,这不是一个严重的外部配置依赖,或者如果我不是真正的计划,使该部分可互换。
https://softwareengineering.stackexchange.com/questions/174803
复制相似问题