c - 在结构中包含版本号字段是否明智?

标签 c legacy

不久前,我完成了 Michael Feathers 强烈推荐的“Working Effectively with Legacy Code”。最后证实我越来越老,我绝对相信在那本书中看到了一个代码示例,他在其中定义了一个 struct,其中包含一个版本号作为其字段之一。

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

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

最佳答案

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

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

关于c - 在结构中包含版本号字段是否明智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10271087/

相关文章:

c - 自动启动程序不像手动启动那样工作

c - 字符串中没有大端和小端?

c++ - ASM 堆栈使用

java - 清理大型遗留 Java 项目

Cuda 编程与 C 编程比较

c++ - avformat_open_input 函数崩溃

ios - Xcode 4.2上的旧版支持

vb.net - 任何当前支持的 Microsoft 语言都可以创建 Active X EXE 吗?

c++ - 你能在 C++ 中将指针声明为 extern 吗?

html - 我该如何更新此代码