我们正在向我们的 Java 库引入语义版本控制 ( http://semver.org/ )。
我们应该如何处理添加新的枚举值?我们的情况如下:
annotations.jar
包含具有类型属性的注释MyEnum
util.jar
具有使用注释的对象注释的对象annotations.jar
wsprovider.jar
使用类似 jaxb 的技术将带注释的对象从util.jar
web api序列化wsconsumer.jar
使用由 提供的 web apiwsprovider.jar
,并根据 的值进行切换MyEnum
以更改其行为。
如果我们向 中添加一个新值MyEnum
,我们应该碰撞各种 jar 的哪些部分(主要/次要/补丁)?
在我看来,util.jar
需要升级主要版本,因为 API 的更改方式可能会破坏现有代码。
按照同样的逻辑,这将波及到 和 中的一个主要wsprovider.jar
碰撞wsconsumer.jar
。
是否annotations.jar
需要一个主要版本的碰撞?
我会说是,因为枚举是一组封闭的值,所以代码(例如wsconsumer.jar
)假设通过覆盖枚举中的所有值,它涵盖了所有可能的行为。向枚举添加一个新值然后打破它。
但是,本能地,将单个值添加到枚举中似乎有点多,并且具有相当大的连锁效应。
我想这只是我们需要习惯使用 semver 的东西吗?