Supongo que esta es otra pregunta sobre codificación dura y mejores prácticas. Supongamos que tengo una lista de valores, digamos fruta, almacenada en la base de datos (debe estar en la base de datos, ya que la tabla se utiliza para otros fines, como los informes SSRS), con un ID:
1 Apple
2 Banana
3 Grapes
Puedo presentarlos al usuario, él selecciona uno, se almacena en su perfil como FavouriteFruit y la ID almacenada en su registro en la base de datos.
Cuando se trata de reglas de negocio / lógica de dominio, ¿cuáles son las recomendaciones para asignar lógica a valores específicos? Diga si el usuario ha seleccionado Grapes. Quiero realizar alguna tarea adicional, ¿cuál es la mejor manera de hacer referencia al valor de Uvas?
// 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 algo mas?
Debido a que, por supuesto, FavouriteFruit se utilizará en toda la aplicación, la lista se puede agregar o editar.
Alguien puede decidir que quiere que se cambie el nombre de 'Grapes' a 'Grape' y esto, por supuesto, rompería la opción de cadena codificada.
La ID codificada no está completamente clara, aunque, como se muestra, puedes agregar un comentario para identificar rápidamente qué elemento es.
La opción de enumeración implica duplicar los datos de la base de datos, lo que parece incorrecto, ya que puede perder la sincronización.
De todos modos, gracias de antemano por cualquier comentario o sugerencia.