Наименование класса в зависимости от версии данных - PullRequest
1 голос
/ 12 августа 2011

У меня есть библиотека, которая анализирует различные сообщения, отправленные в двоичном виде с нескольких устройств. Устройства все еще находятся в активной разработке, и их прошивки часто меняются, что вынуждает меня поддерживать различные варианты протокола для всех существующих версий.

Допустим, сообщение до ревизии выглядело так:

INFO XXXX YYYY CRC

и после версии прошивки 50 она изменилась на:

INFO XXXX YYYY ZZZZ CRC

Имеет ли смысл называть мои классы синтаксического анализатора следующим образом:

class InfoParser : IParser<IInfoMessage>
{ ... }

class InfoParserRev50 : IParser<IInfoMessage> 
{ ... }

Они оба делают схожие вещи, и они должны сосуществовать, и эти изменения происходят постоянно , но мне было интересно, есть ли лучший способ присвоения им имен?

1 Ответ

2 голосов
/ 12 августа 2011

Я думаю, что вполне приемлемо поддерживать разные версии ваших классов, если вам нужно поддерживать разные версии синтаксического анализа одновременно.Вы можете объединить это с какой-то логикой диспетчеризации, чтобы связать все это вместе.Таким образом, вы можете поддерживать несколько версий одновременно и избежать проблем, которые могут быть связаны с попыткой специализировать ваши синтаксические анализаторы по мере развития спецификаций, например, чертовски вложенными и длинными, если \ else, например.

...