開發(fā)工具總結(jié)(9)之開源項(xiàng)目的README文檔的最全最規(guī)范寫法

版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。http://www.itdecent.cn/p/813b70d5b0de

轉(zhuǎn)載請標(biāo)明出處:
http://www.itdecent.cn/p/813b70d5b0de
本文出自 AWeiLoveAndroid的博客


看過很多開源庫,發(fā)現(xiàn)有些庫的文檔寫的一團(tuán)糟,有的甚至就是一個(gè)標(biāo)題,讓你自己下載之后運(yùn)行,自己摸索,看的很頭疼。而那些使用量大的庫的文檔寫的很標(biāo)準(zhǔn),很詳細(xì),看的很舒服。

README文檔寫的好的話能減少很多使用成本,能幫助這個(gè)庫讓更多人了解,更多的人用,可以說好的文檔就是一個(gè)門面。
有好的 README 文檔的項(xiàng)目不一定是一個(gè)好開源項(xiàng)目,但一個(gè)好開源項(xiàng)目一定有一個(gè)好的 README。

下面就簡單的總結(jié)一下README文檔規(guī)范寫法。(這只是我個(gè)人根據(jù)github上幾百個(gè)大型開源庫總結(jié)出來的,如你有更好的意見,歡迎留言。)

一、README文檔的組成部分

看過很多開源框架的README文檔,綜合一下,大概有以下幾部分組成:

  • (一)國際化
  • (二)項(xiàng)目工程介紹
  • (三)項(xiàng)目的使用效果圖
  • (四)項(xiàng)目特點(diǎn)
  • (五)項(xiàng)目的基本結(jié)構(gòu)(架構(gòu))
  • (六)集成方式
  • (七)使用方法
  • (八)混淆
  • (九)關(guān)于作者/組織及交流方式等信息。
  • (十)貢獻(xiàn)者/貢獻(xiàn)組織
  • (十一)鳴謝
  • (十二)版權(quán)信息

二、下面就每個(gè)部分簡單的分析一下:

(一)國際化

github是面向全球的一個(gè)開源網(wǎng)站,所以不要局限于中文文檔,建議寫一個(gè)英文的README,讓來自全球的人都能更方便的了解你的項(xiàng)目。推薦寫法,在REAMDE開頭寫上國際化引用地址:

比如:


國際化

(二)項(xiàng)目工程介紹

項(xiàng)目介紹是必不可少的,它能讓別人快速了解項(xiàng)目。項(xiàng)目介紹主要包括:

  • 項(xiàng)目名稱、logo(沒有l(wèi)ogo就不寫)
  • 這個(gè)開源項(xiàng)目是做什么的?
  • 這個(gè)項(xiàng)目是什么語言編寫的?
  • 這個(gè)項(xiàng)目目前被多少人用到了,有多少好評等?
  • 項(xiàng)目維護(hù)、依賴更新狀態(tài)(如果有的話,這也可以用)等
  • 項(xiàng)目可用版本及其他版本,以及每個(gè)版本的更新信息記錄
  • Demo 或官網(wǎng)地址(如果有)

效果圖如下所示:

英文版:

英文版項(xiàng)目介紹

中文版:

中文版項(xiàng)目介紹

  • 上述案例里面那些圖標(biāo),請參考這個(gè)網(wǎng)站 Shields.io,打開之后想用哪個(gè)直接復(fù)制就可以了,同時(shí)它也支持自定義樣式。

(三) 項(xiàng)目的使用效果圖

如果是一些自定義控件或者項(xiàng)目的演示效果的,基本都會(huì)放上演示效果圖,可以是圖片,也可以是gif圖。
建議:靜態(tài)的頁面的放截圖,交互很復(fù)雜的建議放gif圖。 如果功能比較多,建議每個(gè)功能一張效果圖。

示例如下:

LoveHeartView使用示意圖如下圖所示:


(四)項(xiàng)目特點(diǎn)

主要是介紹項(xiàng)目的特點(diǎn),方便別人查看和了解該項(xiàng)目。

比如 360的RePlugin框架的特點(diǎn)就寫的很詳細(xì):

360的RePlugin的項(xiàng)目特點(diǎn)

(五)項(xiàng)目的基本結(jié)構(gòu)(架構(gòu))

這里主要介紹項(xiàng)目的各個(gè)組成部分,如果是框架,可以附帶架構(gòu)圖解;如果是其他的,可以提供一些UML分析圖,順便分析一下源碼也行的。

比如 360的RePlugin架構(gòu)圖解 如下所示:

360的RePlugin架構(gòu)圖解
關(guān)于RePlugin架構(gòu)的相關(guān)說明

(六)集成方式

一般的項(xiàng)目傳到j(luò)center上面或者AS插件傳到j(luò)etbrains的話 一般會(huì)附帶相關(guān)的集成方式的說明。(如果沒有這些措施的話,這一步可以略過不看。)

比如 okhttp 就有詳細(xì)的3種集成方式:

一個(gè)是下載Jar包;一個(gè)是引用Maven庫;第三個(gè)是添加Gradle依賴:

okhttp的集成方式

(七)使用方法

一般的README必不可少的,最重要的就是用法,主要包括:安裝,運(yùn)行,編譯,部署,debug,該github上的這個(gè)庫如何在自己的項(xiàng)目中使用,以及需要注意的問題,版本更新適配問題等等。

這里就拿 Glide 舉例說明,Glide里面有一個(gè)詳細(xì)的wiki使用文檔的,首頁的README里面也寫了一個(gè)簡單的基本用法,如下圖所示:

Glide的基本用法

(八)混淆

一般來說,開源庫都會(huì)設(shè)置一些混淆規(guī)則的,部分項(xiàng)目由于項(xiàng)目類型特殊之處,所以就沒有混淆這一項(xiàng),具體的看開源項(xiàng)目來定。

例如LitePal這個(gè)開源庫的混淆 如下圖所示:

LitePal混淆規(guī)則

(九)關(guān)于作者/組織及交流方式等信息。

這個(gè)就很靈活了,不是每一個(gè)必備,當(dāng)然寫出來方便大家聯(lián)系作者,也是很好的??梢詫懸幌伦髡呋蛘呓M織的聯(lián)系方式,微信,郵箱,博客,微博,甚至支付寶轉(zhuǎn)賬二維碼等都是可以放上去的。

例如 blankj的AndroidUtilCode這個(gè)庫為例,為了避免打廣告嫌疑,我做了打碼處理:

(十)貢獻(xiàn)者/貢獻(xiàn)組織

比如 谷歌推出的 sample 里面就有貢獻(xiàn)者/貢獻(xiàn)組織信息,如下圖所示:

谷歌推出的sample的貢獻(xiàn)者/貢獻(xiàn)組織信息

(十一)鳴謝

這個(gè)主要是引用了哪些開源技術(shù),這里可以做一些鳴謝,表示對別人的尊重,其實(shí)也是一個(gè)引用聲明,避免因?yàn)榘鏅?quán)而引起不必要的糾紛。

例如:我寫的這個(gè)庫 https://github.com/AweiLoveAndroid/CommonDevKnowledge/blob/master/interview/summary.md 里面就寫了鳴謝。

https://github.com/AweiLoveAndroid/CommonDevKnowledge里面的鳴謝

(十二)版權(quán)信息

版本很重要,開源許可證很重要,如果沒有生命版權(quán),可能會(huì)因?yàn)橐恍┣謾?quán)行為而無法很好的維權(quán),版權(quán)信息可以保護(hù)作者的權(quán)益(個(gè)人理解)。

世界上的開源許可證,大概有上百種。很少有人搞得清楚它們的區(qū)別。最流行的有六種:GPL、BSD、MIT、Mozilla、Apache、LGPL

烏克蘭程序員Paul Bagwell,畫了一張分析圖,說明應(yīng)該怎么選擇。這是我見過的最簡單的講解,只用兩分鐘,你就能搞清楚這 六種許可證之間的最大區(qū)別

六種開源許可證之間的區(qū)別

比如 Picasso 里面的版權(quán)信息,如下圖所示:

Picasso 里面的版權(quán)信息
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容