專案中如何正確使用開源框架

2021-07-26 03:57:40 字數 1871 閱讀 4158

前天發了一篇文章「 如何選擇開源專案? 」廣受大家喜愛,其實我們在使用開源專案的過程中有不少注意的事項,今天就來給大家補充下「如何正確的使用開源專案?」

如果你是個人練手專案,那隨你心情,想怎麼用怎麼用,沒啥需要強調的注意事項,本篇文章僅是以在商業專案採用開源庫做介紹。

1. 使用成熟穩定的開源專案

現在技術日新月異,可能隔幾天就會出來乙個新的開源框架,但是公司的商業專案永遠以穩為主,也許你迫不及待的想嘗鮮體驗新技術,可以在你個人業餘專案進行體驗學習,覺得各方面都使用掌握了,並且該框架已經有不少商業專案採用了,再考慮在公司的商業專案中使用。所以,給大家的建議是:公司的商業專案永遠不要以嘗鮮為主,一定要保證穩定。

2. 理解原理

如果我們在商業專案中採用了一些開源專案,前提是自己一定是理解其原理,完全掌握了才建議在商業專案使用,一些ui類的開源控制項還好,尤其是對於一些框架類的開源專案,如網路請求庫、orm框架、各種載入庫、依賴注入框架等等,不求你掌握他具體實現的每個細節,但是一定要理解其原理,並且熟練掌握他的各種api,再考慮運用到公司的專案中。

3. 不要改原始碼

我們知道我們在使用一些開源專案的時候,不可能永遠滿足我們自己的需求,我們一般都會在其基礎上定製些我們自己的業務需求,這個時候建議大家不要改原始碼,而是在自己的專案裡對引用的開源框架進行擴充套件,如果他不可擴充套件或者說擴充套件起來很麻煩,只能說他的設計還不夠好。

為什麼不建議大家改原始碼?因為好的開源專案一般會持續維護與更新,而一旦我們更改原始碼,這意味著以後我們想要更新版本變得很麻煩。所以,不是特別必要,都強烈建議大家不要改原始碼。

4. 使用gradle遠端依賴

對於 android 開發來說,使用 gradle 遠端依賴是最方便,最流行的一種方式了,一行**直接搞定,如果乙個開源專案不提供 gradle 依賴的方式,只能說有點 low 了。盡量不要使用本地 jar 或者本地 aar 的方式引用,不是不可以,更新起來稍微有點麻煩,如果我們使用 gradle 只需更改乙個版本號就直接公升級了,而且使用 gradle 還可以方便的統一管理,可以見這篇文章

「 gradle依賴的統一管理 」

5. 請一定要封裝一層

計算機史上有個萬能的解決方案就是,如果原有層面解決不了問題,那麼就請再加一層!

picasso.with(context).load(imageurl).into(imageview); 

使用起來是不是特簡單?你也許問我,都封裝的這麼好了還用得著再封裝一層麼?那你錯了,哪怕他已經很完美了,我都會這麼做:

public class imageloader {

public static void with(context context, string imageurl, imageview imageview) {

picasso.with(context).load(imageurl).into(imageview); 

這樣我所有專案呼叫的方式直接就是 imageloader.with() ,這樣做的好處是:

這就是所謂的外部表現一致,內部靈活處理原則。

6. 做好應急,以防萬一

開源專案說白了是公開的,大家都可以採用,但是永遠不要完全依賴,並不是非他不可,選擇的時候最好有可替代品,這也是我為什麼不建議大家使用哪種大而全的框架級開源庫,除非他真的特別優秀,否則不要輕易使用,因為一旦他出問題了,或者說他突然宣布某一天不開源了,那你要崩潰了,替換的代價幾乎可以重寫了。所以建議大家使用那種專注的開源框架,如只做網路庫的,只做處理的,而這種大多都有替代品,一旦他出事,你還有其他別的選擇。

7. 積累自己的輪子

開源專案用的多了,你會逐漸的意識到很多開源庫基本是專案搭框架必須的,按照你自己或者你們公司的使用習慣,你應該積累出一套你們自己的專屬「輪子」,你們專案組成員熟悉的「輪子」,一旦有新的專案開始,搭乙個屬於你們自己的框架分分鐘的事,會大大的提公升你們的開發效率!

來自:

開源框架在專案中的應用

j2ee世界,是自由的世界,活躍的思維,一派百花齊放,百家爭鳴的景象。層出不窮的框架,已經達到了 亂花漸欲迷人眼的地步 不過所謂大浪淘沙,能沉澱下來的精品卻不是很多,現就自己用過的幾個發表下自己的體會。1。hibernate 個人認為屬於精品。本人曾用2.1 3.0兩個版本進行過實際專案的實施,結果...

在專案中如何使用ja micro框架 二

在第一節中,我介紹了如何在自己的工程中引入ja micro。接下來介紹一下ja micro啟動的關鍵點吧。類中,程式啟動時,還需要向main方法傳遞一些執行時需要的引數,分別是 serviceaddress serviceport loglevel registryserver registry這些...

Redis在專案中的正確使用

問題 比如在我們的系統中搜尋乙個不存在id的產品,這個產品對應的id就不會存到redis中,資料庫中也不會有這個id。所有當我們不停的傳送根據這個id查詢的請求時,就會直接命中到我們的資料庫。當請求量非常大時就會把我們的資料庫給幹宕機。解決方案 當搜尋乙個不存在的產品id時,首先會因為我們的redi...