我有一个库,用于解析从多个设备以二进制形式发送的各种消息。设备仍在积极开发中,并且它们的固件经常更改,这迫使我支持所有现有版本的协议的不同变体。
假设修订前的消息如下所示:
INFO XXXX YYYY CRC
在固件版本50之后,它变为:
INFO XXXX YYYY ZZZZ CRC
命名我的解析器类是否有意义:
class InfoParser : IParser<IInfoMessage>
{ ... }
class InfoParserRev50 : IParser<IInfoMessage>
{ ... }
他们都在做类似的事情,他们需要共存,而这些变化一直在发生,但我想知道是否有更好的方法来命名它们?
答案 0 :(得分:2)
如果您需要同时支持不同版本的解析,我认为维护不同版本的类是完全可以接受的。您可以将其与某种调度逻辑相结合,将它们组合在一起。通过这种方式,您可以同时支持多个版本,并避免在规范发展时可能与尝试专门化解析器相关联的问题,例如:例如,非法嵌套和if if语句。