我正在对一个项目进行一些重要的重构和功能添加,并且刚刚破坏了与我的数据的向后兼容性。我通过从我用来存放数据的类中创建一堆子类来做到这一点,并且加载旧的序列化对象不再起作用..
您采用了什么样的预先设计或策略来避免这些类型的情况?我应该完全忘记序列化吗?它似乎特别容易出现这类问题。
我正在对一个项目进行一些重要的重构和功能添加,并且刚刚破坏了与我的数据的向后兼容性。我通过从我用来存放数据的类中创建一堆子类来做到这一点,并且加载旧的序列化对象不再起作用..
您采用了什么样的预先设计或策略来避免这些类型的情况?我应该完全忘记序列化吗?它似乎特别容易出现这类问题。
我使用 XML。XML 鲜为人知的方面之一是它可以在不破坏向后兼容性的情况下进行扩展。
换句话说...
<root>
<something one="1" two="2"/>
</root>
...从版本 A 开始,向后兼容...没有问题
<root>
<something one="1" two="2" three="3"/>
<somethingElse five="5"/>
</root>
...来自修订版 B。
除了通常使用至少在某种程度上容忍变化的序列化机制之外,正如 dacracot 所描述的,我尝试对其进行设置,以便我可以对反序列化过程进行一些每个类的调整。有旧数据格式的转换代码很丑陋,但不像丢失您已序列化的所有内容那么丑陋。