我想这是关于硬编码和最佳实践的另一个问题。假设我有一个值列表,可以说是水果,存储在数据库中(它必须在数据库中,因为该表用于其他目的,例如SSRS报告),其ID为:
1 Apple
2 Banana
3 Grapes
我可以将它们呈现给用户,他选择一个,将其作为FavouriteFruit存储在他的个人资料中,并将ID存储在他的数据库记录中。
当涉及到业务规则/域逻辑时,将逻辑分配给特定值的建议是什么。假设用户选择了葡萄我想执行一些额外的任务,那么引用葡萄值的最佳方法是什么:
// 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)
或者是其他东西?
当然,由于FavouriteFruit将在整个应用程序中使用,因此可以将列表添加或编辑。
有人可能会决定将“葡萄”重命名为“葡萄”,这当然会破坏硬编码的字符串选项。
硬编码的ID尚不完全清楚,如图所示,您可以添加注释以快速识别它是哪个项目。
枚举选项涉及从数据库中复制数据,这似乎是错误的,因为它可能不同步。
无论如何,在此先感谢您的任何意见或建议。
MyApplication.Grape.ID
可以说是口吃。“ Apple”不是ID为3的“ Red_Apple”,也不是4。因此,将“ Apple”重命名为“ Red_Apple”的可能性比声明3为4(甚至3)更有意义。枚举的关键是抽象出其数字DNA。因此,也许是时候真正解耦在业务模型中实际上没有任何意义的任意关系数据库密钥了。