我正在学习如何使用http://semver.org/中名为“语义版本控制”的规则来分配和增加版本号。
在其所有规则中,第一个规则说:
使用语义版本控制的软件必须声明一个公共API。此API可以在代码本身中声明,也可以严格存在于文档中。无论如何,它应该是精确而全面的“
我对“公共API”感到困惑。它指的是什么?
答案 0 :(得分:7)
公共API指的是外部世界(用户,其他程序和/或程序员等)对您的软件具有的“访问点”。
例如,如果您正在开发一个库,那么公共API就是可以对您的库进行的所有方法调用的集合。
据了解,除非主要版本发生变化,否则您的API将向后兼容,即在版本上有效的所有调用在更高版本上都有效。 您可以阅读这些规则的第9点:
如果向公共API引入任何向后不兼容的更改,则必须增加主要版本X(X.y.z | X> 0)。
答案 1 :(得分:2)
我今天发现了SemVer,并从多个来源对其进行了阅读,以确保我完全掌握了它。
我对“公共API”感到困惑。它指的是什么?
我对此也感到困惑。我想着手立即使用 SemVer 来对我的一些脚本进行版本控制,但是它们没有public API
,而且我什至不知道它们如何 < / em>有一个。
我找到的最佳答案是一个解释:
对于所有所有代码,不是明示。对于具有公共API的代码,它仅 。
使用SemVer版本错误的软件是太普遍的来源 沮丧SemVer 无法版本未声明以下内容的软件 公共API 。
声明公共API的软件 包括库和命令行 应用程序。 未声明的软件包括许多 游戏和网站。考虑一个博客;不像图书馆,它没有 公共API。其他软件无法访问 以编程方式。因此,概念向后兼容 不适用于博客。正如我们将解释的那样,存储版本号 取决于向后兼容性。由于这种依赖性, 无法对博客之类的软件进行版本控制。
答案 2 :(得分:1)
它需要一个公共API才能有效地应用它的版本控制模式。
例如:
错误修复不影响API增加修补程序版本
向后兼容的API添加/更改会增加次要内容 版本,......
向后不兼容的API更改会增加主要版本。
什么代表您的API是主观的,因为它们甚至在SemVer文档中声明:
这可能包含文档或由代码本身强制执行。
答案 3 :(得分:0)
已经阅读了几次规范,
- 使用语义版本控制的软件必须声明一个公共API。该API可以在代码本身中声明,也可以严格存在于 文档。无论完成了什么,都应该精确且 全面。
我想知道这是否意味着您的软件使用者必须能够建立他们正在使用的精确“语义”版本。
例如,我可以生成一个简单的脚本,其中语义版本位于脚本的名称中:
DoStuff_1.0.0.ps1
这是公开且精确的。不只是在我的脑海:)