語義化版本命名

軟件名稱后面經(jīng)常有一些英文和數(shù)字,如Windows 7,Android 6.0.0,這些都是軟件的版本標(biāo)志,通過它,我們可以對軟件的類型有所了解。版本控制比較普遍的 3 種命名格式 :GNU 風(fēng)格的版本號命名格式、Windows 風(fēng)格的版本號命名格式、.Net Framework 風(fēng)格的版本號命名格式,其實(shí)都可以歸類為語義化版本.


簡介

在軟件管理的領(lǐng)域里存在著被稱作“依賴地獄”的死亡之谷,系統(tǒng)規(guī)模越大,加入的套件越多,你就越有可能在未來的某一天發(fā)現(xiàn)自己已深陷絕望之中。

在依賴高的系統(tǒng)中發(fā)布新版本套件可能很快會成為惡夢。如果依賴關(guān)系過高,可能面臨版本控制被鎖死的風(fēng)險(必須對每一個相依套件改版才能完成某次升級)。而如果依賴關(guān)系過于松散,又將無法避免版本的混亂(假設(shè)兼容于未來的多個版本已超出了合理數(shù)量)。當(dāng)你專案的進(jìn)展因為版本相依被鎖死或版本混亂變得不夠簡便和可靠,就意味著你正處于依賴地獄之中。

這些規(guī)則是根據(jù)已經(jīng)被各種封閉、開放源碼軟件所廣泛使用的慣例所設(shè)計。為了讓這套理論運(yùn)作,必須先有定義好的公共 API 。這可以透過文件定義或代碼強(qiáng)制要求來實(shí)現(xiàn)。無論如何,這套 API 的清楚明了是十分重要的。一旦你定義了公共 API,你就可以透過修改相應(yīng)的版本號來向大家說明你的修改??紤]使用這樣的版本號格式:X.Y.Z (主版本號.次版本號.修訂號)修復(fù)問題但不影響API 時,遞增修訂號;API 保持向下兼容的新增及修改時,遞增次版本號;進(jìn)行不向下兼容的修改時,遞增主版本號。

這套系統(tǒng)被定義為“語義化的版本控制”,在這套約定下,版本號及其更新方式包含了相鄰版本間的底層代碼和修改內(nèi)容的信息。

規(guī)范

1. 語義化版本控制的軟件必須定義公共 API?;贏PI才可以精確定義版本號的走向

2. 版本號必須采用 X.Y.Z 的格式,?? 其中 X、Y 和 Z 為非負(fù)的整數(shù),且禁止在數(shù)字前方補(bǔ)零。X 是主版本號、Y 是次版本號、而 Z 為修訂號。每個元素必須以數(shù)值來遞增。例如:1.9.1 -> 1.10.0 -> 1.11.0。

3. 標(biāo)記版本號的軟件發(fā)行后,禁止改變該版本軟件的內(nèi)容。任何修改都必須以新版本發(fā)行。

4. 主版本號為零(0.y.z)的軟件處于開發(fā)初始階段,一切都可能隨時被改變。這樣的公共 API 不應(yīng)該被視為穩(wěn)定版。

5. 1.0.0 的版本號用于界定公共 API 的形成。這一版本之后所有的版本號更新都基于公共 API 及其修改內(nèi)容。

6. 修訂號 Z(x.y.Z > 0)必須在只做了向下兼容的修正時才遞增。這里的修正指的是針對不正確結(jié)果而進(jìn)行的內(nèi)部bug fix。

7. 次版本號 Y(x.Y.z > 0)必須在有向下兼容的新功能出現(xiàn)時遞增。在任何公共 API 的功能被標(biāo)記為棄用時也必須遞增。也可以在內(nèi)部程序有大量新功能或改進(jìn)被加入時遞增。而每當(dāng)次版本號遞增時,修訂號必須歸零。

8. 主版本號 X(X.y.z > 0)必須在有任何不兼容的修改被加入公共 API 時遞增。其中可以包括次版本號及修訂級別的改變。每當(dāng)主版本號遞增時,次版本號和修訂號必須歸零。

為什么要使用語義化的版本控制?

這并不是一個新的或者革命性的想法。實(shí)際上,你可能已經(jīng)在做一些近似的事情了。問題在于只是“近似”還不夠。如果沒有某個正式的規(guī)范可循,版本號對于依賴的管理并無實(shí)質(zhì)意義。將上述的想法命名并給予清楚的定義,讓你對軟件使用者傳達(dá)意向變得容易。一旦這些意向變得清楚,彈性(但又不會太彈性)的依賴規(guī)范就能達(dá)成。

舉個簡單的例子就可以展示語義化的版本控制如何讓依賴地獄成為過去。假設(shè)有個名為“救火車”的函式庫,它需要另一個名為“梯子”并已經(jīng)有使用語義化版本控制的套件。當(dāng)救火車創(chuàng)建時,梯子的版本號為 3.1.0。因為救火車使用了一些版本 3.1.0 所新增的功能, 你可以放心地指定相依于梯子的版本號大等于 3.1.0 但小于 4.0.0。這樣,當(dāng)梯子版本 3.1.1 和 3.2.0 發(fā)布時,你可以將直接它們納入你的套件管理系統(tǒng),因為它們能與原有相依的軟件兼容。

作為一位負(fù)責(zé)任的開發(fā)者,你理當(dāng)確保每次套件升級的運(yùn)作與版本號的表述一致?,F(xiàn)實(shí)世界是復(fù)雜的,我們除了提高警覺外能做的不多。你所能做的就是讓語義化的版本控制為你提供一個健全的方式來發(fā)行以及升級套件,而無需推出新的相依套件,節(jié)省你的時間及煩惱。

本文章非原創(chuàng),但是如果你對此認(rèn)同,希望立即開始使用語義化版本控制,你只需聲明你的函式庫正在使用它并遵循這些規(guī)則就可以了. 更詳細(xì)的介紹可以參照http://semver.org/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內(nèi)容