对象/XML后端兼容性

2024-04-25 06:15:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我们用XML存储对象。有时我们更新基本对象,然后我们必须在文件中保存更多数据来表示对象的额外属性。你知道吗

如何组织/实现一个系统,以确保与旧版本的文件向后兼容?你知道吗

当同时查看多个版本时,会出现复杂的部分。你知道吗

Version 1 -> Version 2 -> Version 3 -> Version 4

我们是否应该编写四个文件读取器,每个文件版本一个读取器,以便将其读入对象的当前最新版本?或者,我们是否应该保留版本1-3中所有类的旧版本,以便旧读取器可以将数据读入这些类,然后使用增量更新程序来更新1->2,然后2->3,然后3->4。你知道吗


Tags: 文件数据对象程序版本属性version系统
1条回答
网友
1楼 · 发布于 2024-04-25 06:15:06

当我像这样增加版本时,我通常会保留旧的reader,并更新它以写入新的模型。这意味着我只有当前模型可以处理其余代码,但我仍然可以读取旧文件。我不会保留旧的类,不管你做了什么其他的选择-你想把代码中需要理解旧版本的地方的数量本地化到尽可能少的地方(最好是一个)。如果您保留旧的类,那么任何处理这些类的代码(即使是从公共基派生的代码)都有“了解”旧版本的风险,这会在一段时间后造成无法缓解的维护灾难。你知道吗

这不是万能的……所有明显的选择都有问题。一旦你有了几个以上的旧读取器,更新它们就变得非常耗时了(上帝禁止你将它们需要的一些代码重构到一个新的名称空间中,然后必须有效地编辑相同的代码100次来替换名称)。然而,我通常只是把它当作一个完全摆脱旧版本的网关——如果你决定只让几个旧版本的读卡器来回浮动以获得向后兼容性,那么每次你创建一个新的读卡器时,你就可以开始删除最旧的读卡器,这样维护就不那么麻烦了。你知道吗

相关问题 更多 >