问题描述
假设我编写了一个遵循 Semantic Versioning Specification 的软件(用 R 语言,用于教学目的)。这是软件1.0.0版本的内容:
funk <- function(x) {
jitter(x)
}
哪个有效
set.seed(1)
print(funk(0))
收益
[1] -0.009379653
现在假设我将函数更改为:
funk <- function(x) {
unrelated_random_stuff <- sample(1:10)
jitter(x)
}
现在,set.seed(1); print(funk(0))
收益
[1] -0.01176102
据 SemVer 称,这是否构成重大变化?即,如果我发布带有这些更改的软件,它应该是 2.0.0 吗?我倾向于这么认为,因为这在技术上改变了基于 1.0.0 版的脚本的结果,但我不确定这是否符合“破坏向后兼容性”,因为我们谈论的是随机生成的数字。
解决方法
如果您的客户倾向于依赖输出值,那么是的,您可能希望增加主要版本号。即使这是库代码,也可能有人将其用于模糊测试,并且产生可重现的结果至关重要,以便找到跟踪和修复错误,并确保修复不会在未来回归。>