如何设计解析器以实现向后兼容?

时间:2017-07-18 21:36:54

标签: python parsing

我打算编写一个解析器来解析输入数据,选择和修改字段子集并将它们输出为不同的格式。这很容易。输入数据的模式将来可能会发生变化,我希望我的解析器能够处理最后n个输入模式以实现向后兼容。希望输出模式不必改变,但如果确实如此,我希望将其保持在最低限度。我的问题是 - 我应该如何组织解析器代码来处理输入模式的这种增量更改,同时尽可能地重用代码。我还想让一个新人进入并轻松添加对下一个版本的支持。

如果重要,输入数据包含类型和子类型的记录(因此可以进行模块化分析)。编程语言将是python(因此可以反射)。输入格式为消息包,输出格式为json。

我的想法很少。打开任何建议 -

  1. 具有完全不同版本的解析器,并维护输入架构到解析器版本的映射。根据需要复制粘贴代码。
  2. 根据需要在代码中为输入模式版本提供带有switch case的单个解析器。
  3. 具有基于继承的结构,其中新版本的解析器从旧版本的解析器继承,覆盖所需的任何功能。

1 个答案:

答案 0 :(得分:0)

如果您希望保持向后兼容性,那么您将希望拥有清晰的模块和清晰的功能。没有一段代码试图做太多。

规范不应该改变太多,因此您可以在函数中使用if-else语句。但是,请确保函数的实际行为不会发生变化。