2017-07-18 63 views
0

我打算編寫一個解析器來分析輸入數據,選擇和修改一個字段子集並將它們輸出爲不同的格式。這是很容易的部分。輸入數據的模式將來可能會改變,我希望我的分析器能夠處理最後n個輸入模式以實現向後兼容。希望輸出模式不需要改變,但如果是這樣,我希望它保持在最低限度。我的問題是 - 我應該如何組織解析器代碼來處理對輸入模式的這種增量更改,同時儘可能多地重用代碼。我還想讓新來的人簡單一些,並輕鬆添加對下一個版本的支持。如何設計解析器以實現向後兼容?

如果重要,輸入數據具有類型和子類型的記錄(所以模塊化解析可能)。編程語言將是python(所以反射可能)。輸入格式是消息包,輸出格式是json。

我的想法很少。打開任何建議 -

  1. 具有完全不同的解析器版本並維護輸入模式到解析器版本的映射。根據需要複製粘貼代碼。
  2. 在輸入模式版本中,根據需要在代碼中包含一個帶開關盒的解析器。
  3. 具有基於繼承的結構,其中新版本的解析器從舊版本的解析器繼承,覆蓋所需的任何功能。
+0

這似乎是一個整體靈活的軟件設計的問題,並針對未來的猜測做出決定...總之,不是SO類型的問題。 – Prune

回答

0

如果您希望保持向下兼容性,您需要具有清晰的模塊和清晰的功能。沒有一段代碼試圖做太多。

該規範不應該改變太多,所以你可以只在你的函數中有if-else聲明。但請確保函數的實際行爲不會發展。