Когда жертвовать обратной совместимостью?

По сути, я задаюсь вопросом о таком поведении в приложении, где более новые версии требуют (автоматически) преобразования содержимого, созданного в более старой версии, в более новый формат версии за счет обратной совместимости.

Visual Studio делает это для своих .sln файлы.

Есть ли плюсы / минусы этой практики?

Я предполагаю, что в контексте приложения, которое я пишу (создание 3D-контента), я думал о том, чтобы найти потенциально разные способы для создания вещей во времени (быстрее, лучше, эффективнее), которые можно было бы реализовать, только если старые файлы контента преобразованы в новый способ создания той же вещи в кажущемся подобном способе.

Так, например, может быть v1 был Shape класс где в v2 Вы поняли, что можете сделать это более обобщенно и быстрее, используя PolySpline учебный класс. Но для того, чтобы иметь старый Shapes быть PolySplines вы конвертируете старые файлы контента, и все будет совместимо с новой версией.

Это разумная идея?

2 ответа

Решение

Фактор, о котором я не упомянул, это то, будет ли почти каждый, кто делится данными, использовать одну и ту же версию приложения. Это может быть очень неприятно, например, если что-то наподобие программы редактирования нотного листа сохраняет в формате, который невозможно прочитать в более ранних версиях, так как люди, которые хотят обмениваться нотами, вполне могут не использовать ту же версию программного обеспечения. С другой стороны, если к базе данных будут обращаться только пользователи из небольшого магазина, планируйте всего лишь одновременное обновление всех и сделайте это.

Если у вас нет огромной базы установки и политик / затрат на обновление Draconian (например, Microsoft с ее Office), у вас не должно быть проблем с пользователями, которым нужно открывать файлы новой версии в более старой версии программного обеспечения. Другими словами, люди часто обновляются, но редко понижаются.

Одна вещь, которую вы можете предвидеть и рассмотреть сейчас, - это создать (а) некоторый бесплатный проигрыватель, который позволит пользователям, которые имеют новый формат файла и старую версию программного обеспечения, увидеть этот новый файл (и, возможно, решит обновить) и (б) модуль конвертера, который будет конвертировать от более нового формата к более старому, возможно, удаляются некоторые неподдерживаемые функции / элементы.

Другие вопросы по тегам