2011-02-09 9 views
1

最後のNリリースのファイル形式をアプリケーションで開くことができなければならない場合、ファイル形式を簡単に更新できるようにコードをどのように整理する必要がありますか?ファイル形式がXMLであり、関数がエクスポート用のオブジェクトを取り込み、インポート用のオブジェクトを生成すると仮定します。バージョン管理されたファイルのインポートおよびエクスポートコードを整理するにはどうすればよいですか?

各関数名の末尾に数字を追加してコピー&ペーストし、新しいバージョンごとに番号を増やしますか?これは、バージョン管理された関数の複数バージョンをソースコード内で管理するようなものです。おそらくビルド時にいくつかの魔法をやるのだろうか?

答えて

3

まず、古いバージョンのサポートをインポートするのはエクスポートよりも簡単です。これは、より多くの機能をサポートしているため、通常、後のバージョンが異なるためです。したがって、古い形式に保存するとデータが失われる可能性があります。その結果、私の経験は10年以上にわたり複数バージョンのインポートをサポートしてきただけです。

XMLはもちろんスマートなソリューションです。この問題を念頭に置いて設計されています。私にとって重要なポイントは、きれいなデータモデルからきれいなコード構造が続くことです。新しいバージョンが機能を追加し、追加のタグのサポートによって表されている場合、既存のタグの処理をまったく書き換える必要はありません。

は、既存のタグのセマンティクスを変更し、再コーディングを必要とする可能性があります。解決策:回避できない場合は、この操作を行わないでください。属性またはタグを追加するときは、デフォルト値を定義してから、古いデータファイルと新しいデータファイルをシームレスに処理してください。

だから、気をつけて、異なるファイルバージョンの同じフィールドを扱うためのコードが実際にはかなり異なる場合を避けることができるはずです。これが起こるところでは、私は「特別な状況」(それはソフトウェアによる人生です)があると思います。ジェネリックソリューションを設計するときには、特定のユースケースを念頭に置いています。そのような特別なケースは、とにかく処理されない可能性があります。

要約:データモデルのアップグレードパスを定義することで、将来的に最も効率的に使用できます。

+0

+1:よく説明されています。 –

1

おそらく、バージョン番号が必要です。

しかし、実際にXMLの設計を行うのが最善の方法です。また、XMLが直感的で自然な形で構築されていることを確認してください。そうしないと、コードの現在の構成がXMLの構造に流入する可能性があります。これにより、XMLは製品の将来のバージョンでは読みにくくなります。

列挙型の値を保存するときは、数値を記述しないで、列挙型の名前を記述します。いくつかの要素が原則的に複数回出現する可能性がありますが、現在のアプリケーションでは発生しない場合は、XMLで配列として設計してください。あなたが書いた数字が、問題のドメイン内の論理的な単位であり、アプリケーションが現在何が起こっているのではないのかを確認してください。

このように書かれたXMLでは、XMLのレガシーバージョンをサポートすることは難しくありません。

編集:あなたは抜本的な変更を加えた場合

、それだけで古いXMLを読み込み、レガシー・データ・オブジェクトを実装するのに役立ちます。次に、古いデータモデルから新しいデータモデルに変換する変換メソッドを記述します。これは新鮮なスタートアップに役立ちます。古いデータモデルがひどく設計されていた場合

関連する問題