【问题标题】:What does "public api" mean in Semantic Versioning?语义版本控制中的“公共 api”是什么意思?
【发布时间】:2012-03-16 20:13:54
【问题描述】:

我正在学习如何使用来自http://semver.org/ 的名为“语义版本控制”的规则来分配和增加版本号。

在它的所有规则中,第一个说:

使用语义版本控制的软件必须声明一个公共 API。此 API 可以在代码本身中声明或严格存在于文档中。不管怎么做,都要精准全面”

我对“公共 API”感到困惑。它指的是什么?

【问题讨论】:

标签: semantic-versioning


【解决方案1】:

公共 API 是指外部世界(用户、其他程序和/或程序员等)对您的软件拥有的“访问点”。

例如,如果您正在开发一个库,则公共 API 是可以对您的库进行的所有方法调用的集合。

据了解,除非主要版本发生更改,否则您的 API 将向后兼容,即在一个版本上有效的所有调用都将在以后的版本上有效。 您可以阅读这些规则的第 9 点:

如果将任何向后不兼容的更改引入公共 API,则必须增加主版本 X (X.y.z | X > 0)。

【讨论】:

  • 这个答案是不完整的:公共 API 也指的是上述库的公共文档。记录在案的行为也是一个必须能够依赖的东西。
【解决方案2】:

我今天发现了SemVer,并从多个来源阅读了它,以确保我完全掌握了它。

我对“公共 API”感到困惑。它指的是什么?

我也对此感到困惑。我想立即开始使用 SemVer 对我的一些脚本进行版本控制,但他们没有 public API,我什至不清楚他们如何 有一个。

我找到的最佳答案是:

SemVer明确地不是用于版本控制所有代码。它适用于具有公共 API 的代码。

使用 SemVer 对错误的软件进行版本控制是非常常见的来源 的沮丧。 SemVer无法版本软件没有声明 公共 API

声明公共 API 的软件包括库和命令行 应用程序。 未声明公共 API 的软件包括许多 游戏和网站。考虑一个博客;不像图书馆,它没有 公共 API。其他软件无法访问 以编程方式。因此,向后兼容的概念 不适用于博客。正如我们将解释的,semver 版本号 取决于向后兼容性。由于这种依赖,semver 无法对博客等软件进行版本控制。

来源: What Software Can SemVer Version?

【讨论】:

  • 迄今为止我见过的最佳答案,那个小sn-p 可以解决所有问题!
【解决方案3】:

它需要一个公共 API 才能有效地应用它的版本控制模式。

例如:

不影响 API 的错误修复会增加补丁版本

向后兼容的 API 添加/更改会增加次要 版本,以及...

向后不兼容的 API 更改会增加主要版本。

什么代表您的 API 是主观的,因为他们甚至在 SemVer 文档中声明:

这可能包含文档或由代码本身强制执行。

【讨论】:

    【解决方案4】:

    多次阅读规范,

    1. 使用语义版本控制的软件必须声明一个公共 API。该 API 可以在代码本身中声明或严格存在于 文档。无论如何,它应该是精确的和 全面。

    我想知道这是否意味着您的软件的消费者必须能够建立他们正在使用的精确“语义”版本。

    例如,我可以生成一个简单的脚本,其中语义版本在脚本的名称中:

    DoStuff_1.0.0.ps1
    

    它是公开的和精确的。不只是在我的脑海里:)

    【讨论】:

      猜你喜欢
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 2018-04-11
      • 2011-11-18
      • 1970-01-01
      • 2022-11-08
      • 2018-11-27
      相关资源
      最近更新 更多