C语言 在结构中包含版本号字段是否明智



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

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

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

通常情况

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

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

相关内容

  • 没有找到相关文章

最新更新