Credo che questa sia un'altra domanda su hard coding e best practice. Diciamo che ho un elenco di valori, diciamo frutto, memorizzato nel database (deve essere nel database come la tabella viene utilizzata per altri scopi come i rapporti SSRS), con un ID:
1 Apple
2 Banana
3 Grapes
Posso presentarli all'utente, ne seleziona uno, viene memorizzato nel suo profilo come FavouriteFruit e l'ID memorizzato nel suo record nel database.
Quando si tratta di regole aziendali / logica di dominio, quali sono le raccomandazioni per l'assegnazione della logica a valori specifici. Dì se l'utente ha selezionato Grapes, voglio eseguire un compito extra, qual è il modo migliore per fare riferimento al valore di Grapes:
// Hard coded name
if (user.FavouriteFruit.Name == "Grapes")
// Hard coded ID
if (user.FavoriteFruit.ID == 3) // Grapes
// Duplicate the list of fruits in an enum
if (user.FavouriteFruit.ID == (int)Fruits.Grapes)
o qualcos'altro?
Perché ovviamente FavouriteFruit verrà utilizzato in tutta l'applicazione, l'elenco può essere aggiunto o modificato.
Qualcuno potrebbe decidere di volere che "Grapes" venga rinominato in "Grape" e ciò naturalmente spezzerebbe l'opzione stringa hardcoded.
L'ID codificato non è completamente chiaro sebbene, come mostrato, potresti semplicemente aggiungere un commento per identificare rapidamente quale elemento è.
L'opzione enum implica la duplicazione dei dati dal database che sembra sbagliato in quanto potrebbe non essere sincronizzato.
Comunque, grazie in anticipo per eventuali commenti o suggerimenti.