成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

開源項目,這樣使用才穩(wěn)

企業(yè)動態(tài)
在公司的項目中,或多或少都會使用到一些開源的項目。但是在開源項目的選擇上,就需要格外的慎重了。本篇文章,就如何選擇在商業(yè)項目中使用的開源庫,做一個介紹。

 [[198246]]

一、前言

在公司的項目中,或多或少都會使用到一些開源的項目。但是在開源項目的選擇上,就需要格外的慎重了。

如果只是個人處于學習或者練手的目的,使用的一些比較新穎的開源項目,這個完全隨自己,想怎么使用就怎么使用。但是如果是在公司的商業(yè)項目上,就需要格外慎重了,因為商業(yè)項目***個重點要求,就是一定要能保證穩(wěn)定。

本篇文章,就如何選擇在商業(yè)項目中使用的開源庫,做一個介紹。

二、正確的使用開源項目

2.1 使用成熟穩(wěn)定的開源項目

既然商業(yè)項目,主要是以穩(wěn)定為主,那么在選擇開源項目上,就需要以成熟穩(wěn)定為前提條件。

對于一些常用的技術(shù),就那么多種類,網(wǎng)絡(luò)請求、ORM、圖片加載等。找一些明星項目,總是不會錯的,這個相信大家都懂。

那么,正常來說,如何選擇一個相對穩(wěn)定的開源項目呢?

1、Github 上的熱度

一個開源項目,在 Github 上的 Start 數(shù)和 Fork 數(shù),就可以從側(cè)面反應出它的熱度。

2、issues 和***更新時間

一個開源項目的 issues ,可以表達很多正在使用它的人碰到的問題,以及作者的回復和有沒有得到解決。當然,作者回復的速度和比例也是一個參考。

而***更新時間也反應出這個項目是否有人在積極維護。

3、正在使用它的商業(yè)項目

一個優(yōu)秀的開源項目,注定不是你首先發(fā)現(xiàn)的。在你考慮是否將其集成到公司的商業(yè)項目的時候,一定也有其他人如此考慮了。所以有什么公司的項目,正在使用它,也是一個穩(wěn)不穩(wěn)定的標識。

4、使用穩(wěn)定版本

Github 上的開源項目,也是在不停的維護和改進迭代的,所以如果需要使用,一定要使用它打了 Tag 標簽的版本,這樣才能***限度的保持穩(wěn)定可用。

5、開源協(xié)議

并非所有的開源項目都是可以隨便使用的。在使用前一定要閱讀開源許可協(xié)議,看它是否能允許你隨便使用在商業(yè)項目中。

不過 Github 上的開源項目,大多數(shù)限制并不嚴格。除了 GPL 協(xié)議需要額外注意,它規(guī)定使用它的項目也必須遵循 GPL 協(xié)議,也就是也必須開源,這肯定不適用商業(yè)項目。

2.2 了解背后的原理

如果決定使用這個開源項目,一定要理解其原理,這個其實在實際開發(fā)開發(fā)中,你修改一段別人維護的代碼,也需要結(jié)合上下文,理解它代碼的原理和邏輯,才能保證修改它不會引發(fā)其他的問題。

使用開源項目也正是如此,僅僅會用它是不夠的,決定是否將它引入的人,一定要對它的原理有足夠的了解,不能僅僅停留在 API 的使用上。

在使用前,扒開源碼看本質(zhì),不是說一定要事無巨細的了解它所有的細節(jié),但是主體的業(yè)務線,原理是什么,使用中需要注意什么,在什么場景下可能會出現(xiàn)問題。這些都是需要了解清楚的,避免出現(xiàn)問題而措手不及。

2.3 不要改動源碼

大多數(shù)情況下,開源項目不可能永遠滿足我們的需求,有時候我們可能需要對開源項目進行一些定制修改。

那么,***是對其進行擴展而不是直接去修改它的源碼。

對于一些真正的明星開源項目,實際上已經(jīng)設(shè)計封裝的很好了,如果想要擴展,也非常的簡單。例如,OkHttp,如果你在請求響應的時候想做一些額外的操作,只需要增加一個攔截器即可。

而不改動源碼的原因也非常的簡單,開源項目一般都是會持續(xù)維護和更新的,在不修改源碼的情況下,之后再進行升級就非常的簡單,這里也推薦直接使用 Gradle 遠程依賴的方式去集成(一定要明確指定版本號),這樣大多數(shù)情況下,升級基本上就是改一個版本號的事情。可也不排除會有接口上的變動,但是一般這樣的變動,也會提供升級指南之類的幫助文檔。

2.4 視情況決定引入方式

有時候需要的一些小的開源項目,并非功能強大的明星項目,可能只是一個 UI 效果。

一些開源項目,為了功能上的大而全,可能會集成一些我們不需要的額外功能。而假如我們需要的只是這個開源項目中,很小的一部分,其實是可以考慮將其相關(guān)代碼類拷貝出來,單獨維護的。

這個的前提是此開源項目的耦合性太高了,導致內(nèi)部太多的類相互引用,這樣的情況下,我們只需要將我們關(guān)注的代碼拷貝出來,進行簡單的修改解耦,即可直接使用。這樣的方式可以適當減少方法數(shù)和 dex 的大小。

而如果開源項目本身耦合并不嚴重,實際上依然推薦使用 Gradle 遠程依賴的方式引入,在最終打包的時候,只需要開啟 shrinkResources 即可,它會將一些項目內(nèi)沒有用到的資源移除掉,從而不用擔心方法數(shù)和安裝包大小的問題。

2.5 使用前需要進行封裝

優(yōu)秀的開源項目,其實已經(jīng)封裝的非常好了,可能最終到使用者這邊,只需要一行代碼即可搞定。

但是哪怕是再好的封裝,我依然建議在使用前對其進行一層封裝,哪怕是最簡單的封裝也可以。

對開源庫進行封裝后使用,一個根本性的好處就是,接口統(tǒng)一。哪怕有一天,隨著業(yè)務的增長或者技術(shù)的迭代,之前的開源庫已經(jīng)沒有辦法滿足現(xiàn)在的需求了,需要對整個項目的該庫進行替換。這個時候如果有一層封裝,那么替換起來只需要修改業(yè)務的接口實現(xiàn)類即可,而不是需要整個項目進行代碼替換。

有些人可能會想了,我接手這個項目的時候,前人已經(jīng)是在直接使用這個開源項目了,現(xiàn)在我需要替換它,不是依然需要全文進行代碼替換嗎?

這樣的問題其實非常的常見,那么如果遇上這樣的問題,實際上我們既然已經(jīng)要移除它了,完全可以在項目內(nèi)建立與它包名類名都相同的同名類文件,然后根據(jù)它對外的接口,去實現(xiàn)它。這樣我們只需要處理兩個庫之間,接口使用的差異即可,其實也可以達到快速替換的效果。

但是,也有人說了,這樣是不是就可以不封裝了?反正最終替換的時候,處理兩個庫接口的差異即可。其實并不是這樣的,提前封裝是為了更優(yōu)雅更從容的替換,有時候不同庫的使用方式,去處理它們的差異會讓我們的代碼非常的混亂和不可讀。就像在修改之前,自己給自己制定了一系列的規(guī)則去束縛自己一樣,所以提前封裝,把規(guī)則掌控在自己手里。

所以,如果可以,封裝一層再進行使用。

2.6 實時關(guān)注更新

開源項目必然是會保持更新的,在使用過程中,如果碰到問題,可以去看看最近的提交以及 issues,看看有沒人碰到與你相同的問題,或者可能你的問題已經(jīng)在***版得到解決。

三、結(jié)語

在商業(yè)項目中,使用那個開源項目大多數(shù)情況下都是項目 Leader 去決定的,但是這并不影響我們了解自己維護的項目中,使用到的開源項目,不僅更有利于我們在工作中更快速的發(fā)現(xiàn)問題。閱讀優(yōu)秀的開源項目,是提高技術(shù)能力非常快的一個手段。

【本文為51CTO專欄作者“張旸”的原創(chuàng)稿件,轉(zhuǎn)載請通過微信公眾號聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2021-10-15 06:58:57

零信任高危漏洞

2025-02-06 08:54:45

gockGoHTTP

2020-10-25 19:58:04

Pythonic代碼語言

2021-02-05 11:36:42

數(shù)據(jù)業(yè)務指標

2023-06-27 08:58:03

2021-04-20 10:50:38

Spring Boot代碼Java

2018-01-02 09:36:55

程序員加薪年終

2021-10-17 22:23:43

5G4G數(shù)據(jù)

2020-06-17 21:22:56

Serverless面試官架構(gòu)

2020-05-15 15:28:51

爬蟲Python學習

2022-04-24 08:23:19

Redis內(nèi)存淘汰策略

2023-08-01 08:54:02

接口冪等網(wǎng)絡(luò)

2022-08-21 14:00:11

消息中間件MQ

2021-02-10 07:00:07

WiFi無線路由器無線信道

2016-11-09 20:21:12

簡歷開源時間管理工具編程語言

2024-04-07 08:48:13

WebSocket集群MQ

2018-06-27 16:04:07

2017-07-04 10:09:54

Wi-Fi路由器網(wǎng)絡(luò)

2015-01-26 09:57:47

GradleMaven Centr
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产91在线视频 | 久久夜夜| 超碰成人免费 | 综合色播 | 国产欧美日韩在线 | 国产999精品久久久 午夜天堂精品久久久久 | 男女视频在线观看免费 | 夜夜爽99久久国产综合精品女不卡 | 免费一级欧美在线观看视频 | 成人免费在线视频 | 国产激情自拍视频 | 成人在线视频免费观看 | 国产精品久久久久aaaa九色 | 久久99精品久久久水蜜桃 | 久久精品欧美一区二区三区不卡 | av在线黄 | 国产精品亚洲综合 | 国产精品视频中文字幕 | 黄色国产在线视频 | 精品一区二区久久久久久久网站 | 日韩一二三区 | 午夜视频免费网站 | 免费黄色av| 一级做a爰片久久毛片免费看 | 久久99精品久久久久子伦 | 成人av观看| 欧美日韩综合一区 | 亚洲av毛片 | 日韩成人在线观看 | 日本免费在线 | 午夜视频免费在线 | 狠狠干美女 | av一区二区三区 | 亚洲国产精品一区二区第一页 | 少妇久久久久 | 三级av在线 | 刘亦菲国产毛片bd | 91正在播放| 久久久久久久国产精品影院 | 欧美激情视频一区二区三区在线播放 | 天天影视亚洲综合网 |