Здравствуйте, Максим2006, Вы писали:
М>У нас применяется второй описанный Вами метод. То есть если какой-то компонент системы меняет свои структуры данных, то он же и поддерживает переход от старых структур к новым, то есть FromV1ToV2, FromV2ToV3, .... Тут V1, V2, ... это внутренние версии самих структур данных конкретного компонента (а не версии всего продукта).
М>А чем плох такой подход (я о втором варианте в целом)? ИМХО, это сродни Save As или Convert. Или они Вам тоже не нравятся?
У нас тоже применяется такой подход. Мне не нравится
1) необходимость рисовать все эти методы руками
2) при большом количестве подобных методов наглядность кода стремится к нулю
Интересует формализация этих заморочек. Т.е. в идеале мы имеем набор правил (например, в форме XML) по конвертации данных из старого формата в новый (например, через XSLT). Таким образом, код по апгрейду данных один и тот же (или незначительно меняется в сторону расширения функционала трансформаций), ему просто скармливаются конкретные наборы правил, исходя из версии полученных данных.