Contesto
Sto lavorando su un'app che utilizza il formato JSON per la persistenza su un server web. L'app è in produzione e le funzionalità vengono aggiunte nel tempo, quindi di volta in volta ci sono alcuni dati aggiuntivi che devono essere memorizzati. I dati "legacy" devono ancora essere recuperabili (ma se vengono salvati di nuovo, saranno nel formato più recente).
Ho usato cartelle numerate come HouseParserVersion01
etc e in quelle cartelle le classi hanno lo stesso suffisso a 2 cifre in modo tale da non confonderle. Alcune di queste classi sono anemiche e rappresentano la struttura della stringa JSON, qualcosa di simile a questo (semplificato):
public class HouseData04
{
public int Id;
public List<RoomData04> RoomDatas;
// ...
}
public class RoomData04
{
public string Name;
public bool Active;
// ...
}
Nuove versioni
Ad esempio, diciamo che c'è un cambiamento per ogni casa per avere un nome.
Creo HouseData05
con un campo nome aggiuntivo, ma il modo in cui la stanza JSON è strutturata non cambia. Quello che ho fatto fino ad ora è copiare RoomData04
nella cartella HouseParserVersion05
e rinominarlo RoomData05
. Ciò rende molto chiaro una cosa: tutto "numerato" in HouseParser05
deve terminare in 05. Inoltre, tutte le informazioni sul formato 05 sono raggruppate insieme nella stessa cartella.
Tuttavia, mi chiedo se invece riutilizzare semplicemente la vecchia classe se è la stessa struttura. Il vantaggio sarebbe che quel codice non sarebbe più duplicato. Mostrerebbe anche "questo è ancora lo stesso formato utilizzato nella versione XX". Suppongo che ridurrebbe anche la dimensione del file, ma solo di un importo insignificante.
Domanda
Qui ci sono chiari vantaggi di un modo rispetto all'altro? O c'è un terzo modo ancora migliore che non vedo?