2011-05-30 61 views
2

我有如下因素的问题:较好的是:一个枚举或单

什么是使用代码的状态,枚举或单张的首选方式是什么?

我有一个数据库存储状态值与他们的ID。如果de DB中的状态更改也需要对代码进行一些更改。

现在还没有人根据惯例更喜欢什么?

我一直在找互联网,但找不到明确的答案。

+0

什么是“枚举单身人士“? – 2011-05-30 08:56:33

+1

不知道我明白这个问题。什么是“单身的枚举”?如果你的意思是“枚举或单身人士”,仍然没有意义。枚举是一种用于定义一组命名常量的值类型。单例是一种模式,您可以在其中定义要由整个应用程序使用的某个实例。 – RPM1984 2011-05-30 08:57:44

+0

你是什么意思? – 2011-05-30 08:57:50

回答

5

它部分取决于您的状态的ID是否具有保证值,或者ID是否可以更改每个数据库(通过IDENTITY)。就个人而言,对于我更喜欢​​固定的状态 - 这给你最大的灵活性和最小的开销 - 你可以选择使用枚举(或者如果更方便的话可以使用一些常量),并且你永远不必添加间接寻址,即“get the id那就是open“。

虽然这并不总是可行,但当它不是不是它仍然绝对有用缓存和重新使用它们(以避免击中数据库的查找)。但是,我会避免使用单例,尤其是因为如果您需要与多个数据库交谈,它将无法很好地发挥作用 - 每个数据库中的ID都可能不同。但是,任何合适的缓存实现(或者IoC/DI)都应该允许您存储适当的数据(可能是某种字典)。单身也只是有点痛一般如果你喜欢测试等

但是:枚举和固定的id值是一个更简单。

注意下任何的实施,改变了状态列表是一个不平凡的操作,而不是它至少会是一个很大的UPDATE(或者,如果你非正规化数)。

+0

感谢这使我很清楚 – 2011-05-30 09:12:46

3

如果您打算在整个应用程序使用状态和整个然后是标准化的将是最适合的Enum

Enum Status 
{Open, Pending, Closed, Deferred} 

而且这使得代码更可读

+0

我还想为枚举添加初始化程序Open = 0,Pending = 1 ... – Reniuz 2011-05-30 09:21:53