【发布时间】:2015-10-19 03:11:03
【问题描述】:
使用语义版本控制,如果我的 API 的某个功能发生以下变化:
foo(a, b)
->
foo(a, b, c) //c optional
这需要新的主要版本,还是可以在次要版本下通过?
【问题讨论】:
使用语义版本控制,如果我的 API 的某个功能发生以下变化:
foo(a, b)
->
foo(a, b, c) //c optional
这需要新的主要版本,还是可以在次要版本下通过?
【问题讨论】:
给定版本号 MAJOR.MINOR.PATCH,增加:
当您进行不兼容的 API 更改时的主要版本,
以向后兼容的方式添加功能时的次要版本,并且
进行向后兼容的错误修复时的 PATCH 版本。
如果您的额外参数是可选的,则需要更改 MINOR 版本。否则,它需要 MAJOR 版本更改。
【讨论】:
fooFunction(a,b,c)(包含所有代码)并让foo(a,b)调用fooFunction(a,b,null)。但据我所知,如果您的 API 支持可选参数,则调用来自的语言无关紧要。它会起作用的。无论如何,客户都不知道您需要多少参数。因此,这一切都分解为您的 API 如何对可变数量的参数做出反应
当您进行不兼容的 API 更改时的主要版本,
以向后兼容的方式添加功能时的次要版本,并且
进行向后兼容的错误修复时的 PATCH 版本。
因此,如果您更改功能,那将是一个重大更改。
但是如果你用另一个签名重载函数并且没有破坏兼容性..这是一个小问题
【讨论】: