问题描述
我有以下问题:
在代码(枚举或单例)中使用状态的首选方式是什么?
我在数据库中存储了状态值及其ID。如果在de DB中更改状态,则还需要对代码进行一些更改。
现在有没有人根据惯例更喜欢什么?
我一直在上网,但找不到明确的答案。
解决方法
这部分取决于您的状态的ID是否具有保证的值,或者ID是否可以针对每个数据库更改(通过“ 0”)。就个人而言,对于固定状态,我更喜欢固定状态-它为您提供最大的灵活性,并且开销最少-您可以选择使用枚举(如果方便的话可以使用一些const),而不必添加间接寻址,即\“ get the id为
open
\“。
不过,这并非总是可能的,并且当并非如此时,缓存和重用它们仍然绝对有用(避免为查找而访问数据库)。但是,我会避免使用单例,这尤其重要,因为如果您需要与多个数据库进行对话,它将无法很好地发挥作用-每个数据库中的ID可能完全不同。但是,任何合适的缓存实现(或可能的IoC / DI)都应允许您存储合适的数据(可能是某种字典)。通常,如果您喜欢测试等,单身人士也只会有些痛苦。
但是:枚举和固定的id值要简单得多。
请注意,在任何实施方式下,更改状态列表都是不平凡的操作,尤其是它将是一个大的UPDATE
(如果您是非正规化的,则是多个)。
, 如果您打算在整个应用程序中使用状态并且在整个应用程序中都经过标准化,则最适合Enum
Enum Status
{Open,Pending,Closed,Deferred}
这也使代码更具可读性