Ecco il problema:
Durante l'implementazione di un wrapper C # per un'API online ( Discogs ) mi sono trovato di fronte a un dilemma: molto spesso le risposte restituite hanno per lo più membri simili e mentre modellano queste risposte alle classi, alcune domande su quali vie andare sarebbe la migliore.
Esempio:
Interrogazione per un ' release ' o un 'master "restituirà un oggetto che contiene una matrice di" artista ", tuttavia questi" artisti "non hanno esattamente gli stessi membri.
Attualmente ho deciso di rappresentare questi 'artisti' come una singola classe 'Artist', contro l'esistenza di rispettive classi 'ReleaseArtist' e 'MasterArtist' che diventano presto molto confuse anche se sorge un altro problema: quando una categoria (master o release) non restituisce questi membri, saranno nulli. Anche se potrebbe sembrare confuso, trovo che sia meno confusionario rispetto alla precedente situazione in quanto ho affrontato il problema semplicemente non mostrando membri nulli durante la visualizzazione di questi oggetti.
È questo l'approccio giusto da seguire?
Un esempio di queste differenze:
public class Artist
{
public List<Alias> Aliases { get; set; }
public string DataQuality { get; set; }
public List<Image> Images { get; set; }
public string Name { get; set; }
public List<string> NameVariations { get; set; }
public string Profile { get; set; }
public string Realname { get; set; }
public string ReleasesUrl { get; set; }
public string ResourceUrl { get; set; }
public string Uri { get; set; }
public List<string> Urls { get; set; }
}
public class ReleaseArtist
{
public string Join { get; set; }
public string Name { get; set; }
public string Anv { get; set; }
public string Tracks { get; set; }
public string Role { get; set; }
public string ResourceUrl { get; set; }
public int Id { get; set; }
}
Modifica:
Ho deciso di mantenere le cose semplici come possono essere: separate.
Ci sono pochi nomi strani ma sarà sempre meno confusionario rispetto alle situazioni precedenti.