2011-12-21 37 views
1

可能重複:
Should you wrap 3rd party libraries that you adopt into your project?包裝或不包裝開放源碼框架?

我使用的mail.jar,一個開源的API來發送郵件在java中。

我想知道我是否應該換了電話我自己的框架是這樣的:那麼

DedicatedFramework.sendMail(subject, body, recipientList); 

這dedicatedFramework將作出必要調用的mail.jar。

這個想法是,如果明天我將一個新版本的mail.jar替換爲棄用/更改方法的新版本,那麼我會減少我的耦合。

另一方面,我添加鍋爐代碼只是爲了「隱藏」框架。

你們對此做了什麼?

當然,也可能是比郵箱另一個框架:圖片管理,JdbcTemplate的,GoogleCollections ...

+1

常識沒有「應該」。當你需要抽象時,抽象是一個方便的工具。完全取決於。 – 2011-12-21 15:54:01

+0

Definitile,我的道歉!我讀得太快了嚮導的建議:( – 2011-12-21 17:21:07

回答

0

包裹。在可用和如何使用之間架起一座橋樑將會爲您節省1)大量的樣板代碼,2)在一些小的變化時維護代碼很多,但您必須在20個地方進行更改。

這是完全有可能有更多的這個問題沒有被顯示。我們的記憶力有哪些限制?我們可以支持那些正在加載的額外類嗎?我們必須確定我們會如何處理纏繞問題,就像其他任何問題一樣。

但是,如果沒有任何說「我們無法換行,因爲_ _」,那麼我會建議這樣做。

0

我會包裝它。當代碼全部在一個地方時,查找和更改代碼更容易。

0

通常,APIs相當穩定,類/方法通常不會消失,它們會被棄用。在你的具體情況下,mail.jar非常穩定,所以我不打擾包裝它。

我的建議是不要浪費時間在API的基礎上編寫一個API--它將花費您比從長遠來看節省更多的時間。在過去的十年中,我使用了許多圖書館,而唯一遇到麻煩的是一個由內部團隊編寫的圖書館 - 他們重構並更改了軟件包名稱和方法名稱。這打破了很多代碼。我從來沒有經歷過與開源庫。

2

知道你將不得不使用不同的郵件庫的明天?這有可能嗎?我對此表示懷疑。只是爲了「也許有一天」的包裝是最糟糕的YAGNI。另一方面,如果您的sendMail()方法在發送郵件的地方執行了某些其他操作,那麼它不是一個包裝,而是一個有用的抽象。

0

  • 如果框架將一般都用在你的代碼
  • 如果這將是項目的一部分,其中的開發者數量相對較少知道如何使用該框架以及

不包換

  • 如果它只用於一小部分代碼w烏爾德是非常不可能改變
  • 如果框架或API是真的爲開發商