Ho una classe con un solo metodo. Questo metodo deve leggere il file csv, fare un po 'di lavoro sulla logica interna (controllare se l'elemento esiste già, fare alcune trasformazioni, ecc.) E infine scrivere tutti i dati in un database. Sto usando una classe nidificata per l'archiviazione dei dati dal file CSV come elenco di oggetti. Sembra qualcosa del genere:
public class Importer
{
public void Import(string path)
{
using(var reader = File.OpenText(path))
{
var csv = new CsvReader(reader);
var items = csv.GetRecords<ItemCsvModel>().ToList();
//do some work and insert items to db
}
}
private class ItemCsvModel
{
public int Id {get; set;}
public string Name {get; set;}
public string Description {get; set;}
}
}
Il recensore del codice non ha gradito l'uso di classi nidificate mi ha detto che sarebbe stato meglio se questa classe venisse spostata su un altro file. Penso che questa classe sia solo un dettaglio di implementazione interno e non ha motivo di essere visibile al di fuori della classe Importer. Potrei leggere il file csv senza usare alcuna classe semplicemente facendo qualcosa del genere:
var id = csv.GetField<int>("Id");
var name = csv.GetField<string>("Name");
var description = csv.GetField<string>("Description");
Ma ho scelto un altro approccio. Al momento non ci sono altri posti dove vengono letti i file csv e dubito che cambierà molto presto, quindi non sto ripetendo più volte dichiarazioni di classe. Quali sono i tuoi pensieri?