0

しばらく前に、Michael Feathers による強く推奨された「レガシー コードを効果的に使用する」を読み終えました。私の老けが増していることの最終的な確認として、その本のコード サンプルを見て、彼structがフィールドの 1 つとしてバージョン番号を含む を定義したことを確信しています。

ただし、このコード サンプルをどこで見た可能性があるかを完全に見つけることができません。それが本当にその本にあったかどうか誰かが知っていますか?

それ以外の場合、バージョン番号を に含めることは一般的に良い考えstructですか? どのように/いつ使用できますか?

4

1 に答える 1

3

通常はその逆です。外部メディア上の永続的でシリアル化されたデータ構造はバージョン管理され (バージョン番号を含む)、メモリ内構造は単一のバージョンにのみ存在し、統一モデルで複数の永続的な形式を表現できるように十分に一般化されている可能性があります。バージョン番号が含まれていません。

ただし、このバージョン管理アプローチは、データ構造を変更 (編集、更新) して保存し直すと、通常、良くも悪くも最新の利用可能な形式にエンコードされることを意味します。場合によっては、これは望ましくありません。たとえば、これにより、このデータの一部を作成し、引き続きアクセスする必要がある可能性がある、より低いソフトウェア リリースまたはより低い機能のノード/プロセス/システムとの互換性が失われる可能性があります。このような状況では、メモリ内の構造体にもフォーマット バージョンを格納し、シリアライズ時にそれに固執して、そのような「暗黙のフォーマット アップグレード」を回避したり、古いフォーマットでは表現できない、またはすべきでないタイプの更新を防止したりすることを決定する場合があります。許可する。

于 2012-04-22T20:06:50.300 に答える