日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

如何做好一个开源项目(一)

發(fā)布時(shí)間:2023/12/4 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何做好一个开源项目(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

做好一個(gè)開源項(xiàng)目其實(shí)是一件比較費(fèi)時(shí)費(fèi)力費(fèi)心的工作,它的最大難點(diǎn)除了代碼維護(hù)之外,還包括后期的維護(hù)和持續(xù)的跟進(jìn)。我曾經(jīng)做過(guò)不少開源項(xiàng)目,但是堅(jiān)持下來(lái)的,目前有信心能夠持續(xù)維護(hù)的也只有Magicodes.IE。這里請(qǐng)?jiān)试S我來(lái)一波硬廣:


Magicodes.IE

導(dǎo)入導(dǎo)出通用庫(kù),支持Dto導(dǎo)入導(dǎo)出以及動(dòng)態(tài)導(dǎo)出,支持Excel、Word、Pdf、Csv和Html。已加入NCC開源組織。

  • Github:

    https://github.com/dotnetcore/Magicodes.IE

  • 碼云(手動(dòng)同步,不維護(hù)):

    https://gitee.com/magicodes/Magicodes.IE

如何打造一個(gè)好的開源項(xiàng)目?

我們回歸正題。如何做好一個(gè)開源項(xiàng)目呢?接下來(lái)來(lái)說(shuō)道說(shuō)道:

1)有一個(gè)好的理念和創(chuàng)意

如果大家都在做重復(fù)的事情,但是又沒(méi)有合適的輪子的時(shí)候,那么我們就可以創(chuàng)造一個(gè)。

如果輪子很多,但是沒(méi)有好用的,或者不夠通用,那么我們就可以動(dòng)手寫一個(gè)。

Magicodes.IE就是在這種情況下誕生的。導(dǎo)入導(dǎo)出是一個(gè)非常普遍的場(chǎng)景,相關(guān)的組件也很多,比如就拿導(dǎo)出Excel來(lái)說(shuō),主流的就有EPPlus、NPOI等等庫(kù)。那么為什么我們還需要再造輪子呢?因?yàn)槲覀儼l(fā)現(xiàn),在大部分場(chǎng)景下使用這些庫(kù)我們都需要進(jìn)行一些重復(fù)性的編碼以及特定針對(duì)Excel的操作的編碼才能滿足我們的需求,那么有沒(méi)有更合適的做法?所以就有了Magicodes.IE,通過(guò)設(shè)置Dto就能滿足大部分導(dǎo)入導(dǎo)出的場(chǎng)景,并且還支持除了Excel之外的其他導(dǎo)入導(dǎo)出格式。

2)寫好代碼

代碼規(guī)范,易于閱讀這些都是必不可少的。尤其是在多人遠(yuǎn)程協(xié)作的情況下,代碼審閱,定期重構(gòu)也非常有必要。否則大家就算是想貢獻(xiàn)代碼,但是也要看得懂不是?

3)充分的測(cè)試

代碼寫好了,上去就是干明顯就是挖坑。隨著項(xiàng)目的時(shí)間越長(zhǎng),代碼重構(gòu)或者功能迭代就越需要測(cè)試的保障,而不是個(gè)人感覺(jué)或者編譯通過(guò)即可。

那么如何做好充分的測(cè)試呢?

1.完善的單元測(cè)試

每一次功能迭代或者Bug修復(fù),均要完善好相關(guān)的單元測(cè)試。單元測(cè)試是代碼可靠程度的最基本的保障。

2.盡可能提高代碼覆蓋率

代碼覆蓋率作為一個(gè)指導(dǎo)性指標(biāo),可以一定程度上反應(yīng)測(cè)試的完備程度,是軟件質(zhì)量度量的一種手段。100%覆蓋的代碼并不意味著100%無(wú)bug的應(yīng)用,代碼覆蓋率作為質(zhì)量目標(biāo)沒(méi)有任何意義,而我們應(yīng)該把它作為一種發(fā)現(xiàn)未被測(cè)試覆蓋的代碼的手段。

通過(guò)代碼覆蓋率測(cè)試,我們可以了解測(cè)試過(guò)程中覆蓋和未覆蓋的地方,可能存在的風(fēng)險(xiǎn)。分析未覆蓋代碼,反推在測(cè)試設(shè)計(jì)是否充分,進(jìn)一步明確測(cè)試設(shè)計(jì)階段的問(wèn)題。

代碼覆蓋率測(cè)試也有助于我們發(fā)現(xiàn)測(cè)試死角、冗余代碼、歷史廢棄代碼,便于重構(gòu)。

3.使用自動(dòng)化測(cè)試來(lái)保障每次提交和驗(yàn)證PR

開源項(xiàng)目有很多DevOps的服務(wù)可以選擇,我們可以基于其打造自己的自動(dòng)化測(cè)試來(lái)保障開源項(xiàng)目的質(zhì)量,以針對(duì)每次提交、PR進(jìn)行驗(yàn)證,并且作為資源發(fā)布的參考依據(jù)。


4)友好的文檔

文檔一直是開源項(xiàng)目運(yùn)作的一個(gè)難題:

  • 代碼寫的歡,文檔難產(chǎn)。

  • 本地化文檔(中文文檔)沒(méi)問(wèn)題,其他語(yǔ)言文檔(英文文檔)難以編寫。

  • 文檔的更新永遠(yuǎn)跟不上代碼的更新,版本的迭代。

友好的文檔一直是開源項(xiàng)目吸引用戶的首要標(biāo)準(zhǔn),所以文檔是必須的。

Magicodes.IE的文檔也在積極補(bǔ)充和完善之中,希望大家能夠多多支持:

  • Magicodes.IE之導(dǎo)入學(xué)生數(shù)據(jù)教程

  • Magicodes.IE基礎(chǔ)教程之導(dǎo)出Excel

  • Magicodes.IE基礎(chǔ)教程之導(dǎo)出Pdf

  • Excel模板導(dǎo)出之導(dǎo)出教材訂購(gòu)表

  • 使用Magicodes.IE.Excel完成Excel圖片的導(dǎo)入和導(dǎo)出

5)版本規(guī)劃和管理

對(duì)于開源項(xiàng)目來(lái)說(shuō),版本規(guī)劃和發(fā)布版本也不應(yīng)該是一件隨意的事情。畢竟錯(cuò)誤的版本可能會(huì)給用戶帶來(lái)災(zāi)難性的問(wèn)題。不合理的規(guī)劃,也可能會(huì)將項(xiàng)目帶入溝渠。

這里分享幾個(gè)經(jīng)驗(yàn):

  • 版本規(guī)劃我們通過(guò)收集反饋來(lái)進(jìn)行規(guī)劃。如Magicodes.IE就通過(guò)Issue收集用戶反饋、討論以推出新的版本:

  • 資源發(fā)版提供詳細(xì)的版本日志,以供用戶參考和追蹤:

  • 測(cè)試版預(yù)先發(fā)布Beta版的包,如上圖中的2.2.0-beta2。


6)做好推廣

其實(shí)也就是讓可能需要他、真正需要他的人知道他的存在。從技術(shù)人的角度建議如下:

  • 和技術(shù)社區(qū)合作,分享干貨,不水群,不瞎聊

  • 加入知名開源組織,比如Magicodes.IE就加入了NCC開源組織

  • 不要理會(huì)噴子。干自己認(rèn)為有價(jià)值的事情,不要理會(huì)那些只會(huì)噴但是啥也不會(huì)做的麻瓜。對(duì)于開源作者傷害最大的其實(shí)就是噴子和嘴炮,大家都是利用業(yè)余精力去支持和付出,為社區(qū)做貢獻(xiàn),不圖你支持,但是希望你別圖一時(shí)嘴快!不愛(ài)用那你就滾啊,不好用那你寫個(gè)更好用的分享出來(lái)啊!


7)關(guān)注反饋,持續(xù)更新

  • 從Issue中來(lái),到代碼中去。

    在開源項(xiàng)目達(dá)到一定規(guī)模時(shí),社區(qū)就會(huì)給出非常多的反饋。這是單兵作戰(zhàn)肯定是不適合的,那么適時(shí)組成自己的開源團(tuán)隊(duì)或者開源管理委員會(huì)就非常有必要了。同時(shí),社區(qū)反饋的很多問(wèn)題往往都是過(guò)于偏具體業(yè)務(wù)的需求,這時(shí)就需要我們?nèi)コ槿〕鐾ㄓ玫男枨罅恕?/p>

  • 歡迎PR,及時(shí)處理PR!

    開源項(xiàng)目在前期往往均只能利用業(yè)余精力運(yùn)作,那么每一個(gè)PR都是非常寶貴的,團(tuán)隊(duì)一定要及時(shí)驗(yàn)證并處理。先以功能優(yōu)先,再適當(dāng)重構(gòu)。

  • 大小版本提前規(guī)劃,小版本快速迭代!

開源項(xiàng)目既需要有長(zhǎng)期的規(guī)劃,以確保長(zhǎng)期的方向,也需要有短期的計(jì)劃和目標(biāo)。這樣對(duì)團(tuán)隊(duì)對(duì)用戶都是有幫助的。同時(shí)小版本規(guī)劃或者考慮的功能也可以通過(guò)Issue的方式和用戶探討:


最后

本篇僅是筆者結(jié)合Magicodes.IE講解如何做好一個(gè)開源項(xiàng)目的第一篇,接下來(lái),我們會(huì)講解如何基于開源項(xiàng)目完成徽章、DevOps等等。

轉(zhuǎn)載是一種動(dòng)力 分享是一種美德

如果喜歡作者的文章,請(qǐng)關(guān)注【麥扣聊技術(shù)】訂閱號(hào)以便第一時(shí)間獲得最新內(nèi)容。本文版權(quán)歸作者和湖南心萊信息科技有限公司共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。

文檔官網(wǎng):docs.xin-lai.com

QQ群:

編程交流群<85318032>?

產(chǎn)品交流群<897857351>

總結(jié)

以上是生活随笔為你收集整理的如何做好一个开源项目(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。