A partire da ora, abbiamo due diversi stili di intializzazioni dell'oggetto basate sulla riga SQL nella nostra base di codice:
public Config(SqlDataReader sdr) {
for (int i = 0; i < sdr.FieldCount; i++) if (!sdr.IsDBNull(i)) {
switch (sdr.GetName(i)) {
case 'Id': Id = sdr.GetInt32(i); break;
...
}
}
}
e
public User(SqlDataReader sdr)
{
UserId = sdr.GetInt32(0);
if (!sdr.IsDBNull(1)) Name = sdr.GetString(1);
...
}
Sono chiamati così:
while(sdr.Read()) users.Add(new User(sdr));
La guida alla codifica C # dice che lo stile deve essere coerente, quindi uno di loro deve passare all'altro, se non troviamo una ragione per tenerli diversi. Quindi, prima di implementare l'intero progetto con i suoi oltre 50 modelli, abbiamo bisogno di una linea guida di progettazione per questo.
Entrambi i design hanno i loro svantaggi, ma non so come renderlo migliore:
- Nel primo caso, nessuno se ne accorgerà fino a più tardi nel codice se i campi richiesti vengono eliminati dalla query.
- Il secondo fallirà ogni volta che i campi nella query saranno riordinati.
Quale preferiremmo o come potremmo migliorarli per ovviare agli inconvenienti? Sono davvero degli svantaggi, in termini di manutenzione / riutilizzo del codice?