0

不久前,我完成了 Michael Feathers 强烈推荐的“有效地使用遗留代码”。在对我日益衰老的最后确认中,我绝对相信在那本书中看到了一个代码示例,其中他定义了一个struct包含版本号作为其字段之一的代码示例。

但是,我完全无法再次找到我可能在哪里看到此代码示例。有谁知道那本书里有没有?

否则,在 ? 中包含版本号通常是个好主意struct?如何/何时可以使用它?

4

1 回答 1

3

通常情况是相反的。外部媒体上的持久、序列化数据结构将被版本化(包含版本号),而内存中的结构将仅存在于单个版本中,可能泛化到足以能够在统一模型中表示多种持久格式,并且通常不包含版本号。

但是,这种版本控制方法意味着,如果您修改(编辑、更新)数据结构并将其保存回来,它通常会被编码为最新的可用格式,无论好坏。有时这是不可取的。例如,这可能会破坏与创建此数据并且可能仍需要访问它的较低软件版本或较低功能节点/进程/系统的兼容性。在这种情况下,您可能会决定将格式版本存储在内存结构中,并在序列化时坚持使用它,以避免这种“隐含的格式升级”,或者防止旧格式无法表示或不应该出现的更新类型允许。

于 2012-04-22T20:06:50.300 回答