Когда жертвовать обратной совместимостью?
По сути, я задаюсь вопросом о таком поведении в приложении, где более новые версии требуют (автоматически) преобразования содержимого, созданного в более старой версии, в более новый формат версии за счет обратной совместимости.
Visual Studio делает это для своих .sln
файлы.
Есть ли плюсы / минусы этой практики?
Я предполагаю, что в контексте приложения, которое я пишу (создание 3D-контента), я думал о том, чтобы найти потенциально разные способы для создания вещей во времени (быстрее, лучше, эффективнее), которые можно было бы реализовать, только если старые файлы контента преобразованы в новый способ создания той же вещи в кажущемся подобном способе.
Так, например, может быть v1
был Shape
класс где в v2
Вы поняли, что можете сделать это более обобщенно и быстрее, используя PolySpline
учебный класс. Но для того, чтобы иметь старый Shapes
быть PolySplines
вы конвертируете старые файлы контента, и все будет совместимо с новой версией.
Это разумная идея?
2 ответа
Фактор, о котором я не упомянул, это то, будет ли почти каждый, кто делится данными, использовать одну и ту же версию приложения. Это может быть очень неприятно, например, если что-то наподобие программы редактирования нотного листа сохраняет в формате, который невозможно прочитать в более ранних версиях, так как люди, которые хотят обмениваться нотами, вполне могут не использовать ту же версию программного обеспечения. С другой стороны, если к базе данных будут обращаться только пользователи из небольшого магазина, планируйте всего лишь одновременное обновление всех и сделайте это.
Если у вас нет огромной базы установки и политик / затрат на обновление Draconian (например, Microsoft с ее Office), у вас не должно быть проблем с пользователями, которым нужно открывать файлы новой версии в более старой версии программного обеспечения. Другими словами, люди часто обновляются, но редко понижаются.
Одна вещь, которую вы можете предвидеть и рассмотреть сейчас, - это создать (а) некоторый бесплатный проигрыватель, который позволит пользователям, которые имеют новый формат файла и старую версию программного обеспечения, увидеть этот новый файл (и, возможно, решит обновить) и (б) модуль конвертера, который будет конвертировать от более нового формата к более старому, возможно, удаляются некоторые неподдерживаемые функции / элементы.