包装或不包装开源框架?

时间:2011-12-21 15:52:29

标签: java frameworks

  

可能重复:
  Should you wrap 3rd party libraries that you adopt into your project?

我正在使用mail.jar,一个用于在java中发送邮件的opensource api。

我想知道是否应该将它的调用包装到我自己的框架中:

DedicatedFramework.sendMail(subject, body, recipientList);
然后,这个dedicatedFramework将对mail.jar进行必要的调用。

我的想法是,如果明天我将mail.jar替换为弃用/更改方法的新版本,那么我会减少我的耦合。

另一方面,我添加锅炉代码只是为了“隐藏”框架。

你们对此有何看法?

当然,它可能是另一个框架而不是邮件:图片管理,jdbcTemplate,GoogleCollections ......

5 个答案:

答案 0 :(得分:2)

知道你明天必须使用不同的邮件库吗?它甚至可能吗?我对此表示怀疑。包装只是为了"也许有一天"是最糟糕的YAGNI。

另一方面,如果你的sendMail()方法在你发送邮件的地方做了一些其他的事情,那么它不是一个包装器,而是一个有用的抽象。

答案 1 :(得分:0)

包裹它。在可用内容和将来如何使用它之间建立桥梁将为您节省1)许多样板代码和2)当一些小的变化但是您必须在20个位置进行更改时,很多维护代码。

这个问题完全有可能没有显示出来。我们的记忆限制是什么?我们可以支持那些加载的额外类吗?我们必须确定通过执行包装会遇到什么问题,就像任何其他问题一样。

但是,如果没有任何内容表示“我们无法换行因为 _ _”,那么我建议你这样做。

答案 2 :(得分:0)

我会把它包起来。当代码全部集中在一个地方时,更容易找到和更改代码。

答案 3 :(得分:0)

通常,API相当稳定,类/方法通常不会消失,它们会被弃用。在您的特定情况下mail.jar非常稳定,所以我不打算包装它。

我的建议是不要浪费你的时间在API之上编写API - 从长远来看,它将花费你更多的时间。在过去的十年里,我使用过很多图书馆,我遇到过的唯一一个图书馆是由内部团队编写的图书馆 - 他们重构并更改了包名和方法名称。这打破了很多代码。我从未体验过开源库。

答案 4 :(得分:0)

包装

  • 如果框架通常会在您的代码库中使用
  • 如果它是项目的一部分,相对较少的开发人员知道如何很好地使用框架

不要换行

  • 如果它只用于很少会改变的代码的一小部分
  • 如果框架或api是开发人员的常识,