背景:
私は、急速に変化する API と急速に変化するデータ モデルに依存するツールに取り組んでいます。
データ モデルと API の変更はよくあることです。ここでの問題は、コードが現在および過去のすべてのバージョンで引き続き動作する必要があることです (つまり、100% のバックワード互換性)。これは、すべてが引き続き内部で使用されるためです。
また、欠落している機能や不明な機能などが発生した場合は、正常に機能を低下させる必要があります。
ツールは、WinForms を使用して C# で記述され、カスタム ハードウェアをテストするためのものです。
<Edit>
私の目標は、機能を追加するためのクラスを作成するだけで済み、データ モデルの変更が発生したときに、API バージョンに基づいてファクトリによって作成されるデータ モデル クラスの新しいセットを作成するだけで済むようにすることです。
私にとっての課題は、将来の機能が特定のデータ モデルに依存する可能性があることです。これは、(最終的なコンボに到達するまで) 混合および一致する可能性があります。これをどのように優雅に処理しますか?
<Edit2>
もちろん、製品が出荷されたら、ツールを再利用して新しい製品用のコードを追加したいと考えています。ここに着手する前は、すべての製品サイクルはすべてのツールを (ゼロから) 書き直すことを意味していました。
</Edit>
質問:
API/データ モデルの複数のバージョンとの互換性を維持するために、どのような設計手法とパターンを提案したり、成功したりしますか?
どのような落とし穴に注意する必要がありますか?