什么是最好的:一个枚举或一个单身人士

时间:2011-05-30 08:50:29

标签: c# enums singleton

我有以下问题:

在代码中使用状态的首选方法是什么?enum OR singleton?

我在数据库中存储了状态值及其ID。如果de DB中的状态更改,则代码中还需要进行一些更改。

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

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

2 个答案:

答案 0 :(得分:5)

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

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

但是:枚举和固定的id值要简单得多。

请注意,在任何实现下,更改状态列表是一项非常重要的操作,尤其是它将是一个很大的UPDATE(或者如果你是非规范化的那么几个)。

答案 1 :(得分:3)

如果您打算在整个应用程序中使用状态并且标准化,那么它最适合Enum

Enum Status
{Open, Pending, Closed, Deferred}

这也使代码更易于阅读