10
使用第三方库-始终使用包装器吗?
我参与的大多数项目都使用几个开源组件。作为一般原则,是否始终避免将代码的所有组件绑定到第三方库,而是通过封装包装器来避免更改的痛苦,是一个好主意吗? 例如,我们的大多数PHP项目都直接使用log4php作为日志记录框架,即通过\ Logger :: getLogger()实例化,它们使用-> info()或-> warn()方法,等等。在将来,但是,可能会出现一个假设的日志记录框架,该框架在某种程度上会更好。就目前而言,与log4php方法签名紧密相关的所有项目都必须在许多地方进行更改,以适应新的签名。显然,这将对代码库产生广泛的影响,任何更改都是潜在的问题。 对于这种情况下的面向未来的新代码库,我经常考虑(有时实现)包装器类来封装日志记录功能,并使其(尽管并非万无一失)更容易以最小的更改来改变日志记录的工作方式; 代码调用包装器,包装器将调用传递给日志框架du jour。 请记住,其他库中有更复杂的示例,我是否过度设计还是在大多数情况下是明智的预防措施? 编辑:更多考虑-使用依赖注入和测试加倍实际上要求我们无论如何都要抽象出大多数API(“我想检查我的代码是否执行并更新其状态,但不写日志注释/访问真实数据库”)。这不是决定者吗?