程式版本號碼
如大家有留意,最近香港天晴的更新將版本編號由 v1.16.1
變成 v17
。為何由 v1
一口氣跳到 v17
呢?或者說,為什麼將前面的 v1
拿走?其實每次程式出新版本,都會面對一個問題,就是此版本的編號應該是什麼呢?
之前一直使用 Semantic Versioning, 即
MAJOR.MINOR.PATCH 。
規則約略如下:
- 如有重大改變 (如 API 改動) ,即 MAJOR + 1
- 如只是功能改動,即 MINOR +1
- 如只是 bug fix,即 PATCH +1
以「香港天晴」為例,之前是 v1.16.1
,可以看出沒有重大改動,而功能變更則為 16 次。
其實使用此此法沒什麼不便,不過一直覺得很長很累贅。有時也實在決定不了怎樣才算是大改動,如「香港天晴」 v1.2
時加入 Widget 支持,算是 major 還是 minor 功能?可以說是重大變更,但也可以說是功能強化而已。結果現在出了 40 多個版本,版本編號還停留在 v1.16.1
,感覺 major no. 變得沒什麼用。
直至最近讀到這篇文章,其中關於 application versioning 的部份令我深有同感,就是對用家來說,只有最前的 major no. 是重要的,點數後的數字不太理會。 你不覺得 v16
比 v1.16
容易記一點嗎? 另外文章作者也不是用有沒有重大改動決定 major + 1,而是以有沒有用家視覺上看得到的改變來決定的,則是如果程式加了一個 text box,major no 就要 + 1。
讀完後決定將 app 的版本編號改為
MAJOR.MINOR
並用以下規則:
- 如視覺上有變動,則 major + 1
- 如用家看不到的變動,如修正臭蟲或優化處理,則只是 minor + 1
這樣決定 version no. 會比較簡單,也不會令 version no. 太長,感覺不錯。