我目前管理的图书馆有很多公共用途,并且我对语义版本化有疑问。我想重构该库的一个相当重要的部分,该部分执行不正确-始终执行不正确。但是,这样做将意味着更改公共API,这是一个重大决定。
我要进行的更改围绕如何使用迭代器展开。当前,用户必须执行以下操作:
while ($element = $iterator->next()) {
// ...
}
至少在PHP的本机Iterator接口中,这是不正确的。我要替换为:
while ($iterator->valid()) {
$element = $iterator->current();
// ...
$iterator->next();
}
类似于:
foreach ($iterator as $element) {
// ...
}
如果您查看Tom的语义版本控制指南,他清楚地指出,对公共API的任何更改(即那些不向后兼容的更改)都应证明是主要版本的合理性。因此,该库将从1.7.3跳到2.0.0,对我来说,这是一个太远的步骤。我们只是在谈论一个已修复的功能。
我确实有计划最终发布2.0.0,但是我认为这是您完全重写该库并实现了许多公共API更改的时候。引入此重构是否需要发行主要版本?我真的不知道它是如何工作的-我更愿意将其发布为1.8.0或1.7.4。有人建议吗?
next()
方法用于检索当前元素并向前移动内部指针。哪有错 next()
应该移动指针,并current()
用于检索...
next()
仅是移动指针的返回值,这真的不会破坏兼容性