Sanırım bu zor kodlama ve en iyi uygulamalar hakkında başka bir soru. Diyelim ki bir değerler listesine sahibim, veritabanında depolanan meyve diyelim (tablonun SSRS raporları gibi diğer amaçlar için kullanıldığı veritabanında olması gerekir), bir ID ile:
1 Apple
2 Banana
3 Grapes
Onları kullanıcıya sunabilirim, bir tanesini seçer, FavouriteFruit olarak profilinde saklanır ve veritabanındaki kaydında bulunan ID.
İş kuralları / etki alanı mantığı söz konusu olduğunda, mantığı belirli değerlere atamak için öneriler nelerdir? Kullanıcı Üzümleri seçtiyse, fazladan bir görev yapmak istiyorum, Üzüm değerine başvurmanın en iyi yolu nedir:
// 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)
veya başka bir şey?
Elbette FavouriteFruit, başvuru boyunca kullanılacağından, liste eklenebilir veya düzenlenebilir.
Birileri 'Grape'nin' Grape 'olarak yeniden adlandırılmasını isteyip istemediğine karar verebilir ve bu elbette kodlanmış dize seçeneğini bozacaktır.
Sabit kod kimliği tamamen net değildir, ancak gösterildiği gibi, hangi öğenin hızlı bir şekilde olduğunu belirlemek için bir yorum ekleyebilirsin.
Enum seçeneği, senkronizasyondan çıkabileceği için yanlış görünen veritabanından veri kopyalamayı içerir.
Neyse, yorum veya önerileriniz için şimdiden teşekkür ederiz.
MyApplication.Grape.ID
kekemelik yapıyor, tabiri caizse. Bir "Elma", 3'ten daha fazla kimlik numarası olmayan "Red_Apple" de değildir. Bu nedenle, "Apple" ı "Red_Apple" olarak yeniden adlandırma potansiyeli, 3'ün 4 (ve hatta 3) olduğunu beyan etmekten daha anlamlı değildir. Bir enumun noktası, sayısal DNA'sını soyutlamaktır. Bu nedenle, belki de birinin iş modellerinde tam anlamıyla bir anlamı olmayan keyfi ilişkisel DB anahtarlarının gerçekten ayrılma zamanı gelmiştir .