vergil wang


Hi, i'm vergilw, i'm a iOS developer from China, i'm living in Hubei,Wuhan.


iOS Developer

Semantic Versioning

大部分开发平台都有包管理工具,这让我们可以很方便的管理第三方的工具集。由于第三方工具集也在不断更新迭代,为了保证第三方工具集的更新不会影响项目的稳定性,很多时候我们会使用包管理工具依赖指定的第三方工具版本,而不是最新版本。很多包管理工具使用的版本号命名方式遵从Semantic Versioning。所以无论是使用第三方工具,还是自己发布第三方工具,了解Semantic Versioning十分必要。

Semantic Versioning介绍

Semantic Versioning版本号X.Y.Z主要由三部分组成: MAJOR.MINOR.PATCH

分别代表了主版本,次版本,补丁版本。Semantic Versioning提出了一套简单的规则和要求,规定如何分配和递增版本号。任何的第三方工具都会将自身的功能封装成一些接口方法供程序调用,所以公开的接口方法必须清晰准确。然后使用特定部分的版本号增加来传达更新的内容。

  • MAJOR主版本号增加:当你的公共接口方法修改后不向下兼容
  • MINOR次版本号增加:当你新增了功能,公共接口方法可以向下兼容
  • PATCH补丁版本号增加:当你修复了错误,公共接口方法可以向下兼容

Semantic Versioning具体使用

我们可能会想当然的将新开发的第三方工具第一个版本定义为1.0.0,但是推荐的做法是0.1.0。因为我们没法保证我们刚开始就设计了一个完美且稳定的第三方工具,通过版本号的方式可以明确的传达给使用者,我们的公共接口方法可能不会那么稳定,当前正处于频繁迭代的初期。在1.0.0之前当我们对公共接口方法进行了修改且不向下兼容时,仅增加MINOR次版本号。当我们经过了多个初期版本迭代,进行大量测试后,终于有了一个稳定的公共接口方法。这时我们可以改为1.0.0,告诉使用者可以放心的依赖我们的工具,因为我们已经非常稳定了。所以说在1.0.0版本以前MINOR和PATCH的含义会有不同。

包管理工具

很多包管理工具都针对Semantic Versioning做了处理,例如FlutterPackages里的YAML文件dependencies引入了^符号。当你指定第三方工具版本号^1.2.3等同于>=1.2.3且<2.0.0,当你指定版本号^0.1.2等同于>=0.1.2且<0.2.0。这符合上面所介绍的规则。包管理工具这样的处理极大的方便了我们的第三发工具集的管理,能保证第三方工具集的更新不会影响项目的稳定性。

参考文档

最近的文章

ccache编译器缓存

ccache是什么ccache(compiler cache)是一个编译器缓存工具,它通过缓存先前的编译结果来减少重新编译的时间。支持的语言包括C,C ++,Objective-C和Objective-C++,主要工作于GCC编译器或者跟GCC类似的编译器。ccache是samba团队贡献的开源工具,当前由samba团队的Joel Rosdahl负责维护,最初是由Andrew Tridge Tridgell开发。灵感来源于Erik Thiele的编译器缓存shell脚本,打破了shell脚...…

继续阅读
更早的文章

HTML DOM介绍

什么是DOM?DOM (Document Object Model) 译为文档对象模型,是 HTML 和 XML 文档的编程接口。HTML DOM 定义了访问和操作 HTML 文档的标准方法。DOM 以树结构表达 HTML 文档。DOM 是 W3C(万维网联盟)的标准。DOM 定义了访问 HTML 和 XML 文档的标准:W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。W3C DOM 标准被分为 3 个不同的部分: 核心...…

继续阅读