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