プロジェクトで重要なリファクタリングと機能の追加を行っていますが、データとの下位互換性が失われました。データを格納するために使用したクラスから一連のサブクラスを作成することでそれを行い、古いシリアル化されたオブジェクトのロードが機能しなくなりました..
このような状況を回避するために、どのようなプレエンジニアリングまたは戦略を採用していますか? 連載を完全に忘れるべきですか?特にこの種の問題が発生しやすいようです。
プロジェクトで重要なリファクタリングと機能の追加を行っていますが、データとの下位互換性が失われました。データを格納するために使用したクラスから一連のサブクラスを作成することでそれを行い、古いシリアル化されたオブジェクトのロードが機能しなくなりました..
このような状況を回避するために、どのようなプレエンジニアリングまたは戦略を採用していますか? 連載を完全に忘れるべきですか?特にこの種の問題が発生しやすいようです。
私はXMLを使用しています。XML のあまり話題に上らない側面の 1 つは、下位互換性を損なうことなく拡張できることです。
言い換えると...
<root>
<something one="1" two="2"/>
</root>
...リビジョン A から、下位互換性に問題はありません...
<root>
<something one="1" two="2" three="3"/>
<somethingElse five="5"/>
</root>
...リビジョン B から。
dacracot が説明するように、変更に対して少なくともある程度寛容なシリアライゼーション メカニズムを一般的に使用する以外に、デシリアライゼーション プロセスのクラスごとのチューニングを実行できるようにセットアップしようとしています。古いデータ形式の変換コードがぶら下がっているのは醜いですが、シリアライズしたものすべてを失うほど醜いわけではありません。