我应该使用枚举作为鉴别器吗?

roh*_*agg 5 .net oop enums

枚举何时分解?


为了支持现有系统中的新功能,我只是考虑对我的数据库模式中的实体表实施某种形式的鉴别器。

为了从做最少的事情开始,为了可读性,我首先在业务实体层决定了一个整数列和一个 C# 枚举。这将提供穷人的多态性,最终可能会发展为实际的多态性,并可能发展为策略模式。

我决定咨询博客圈,因为我从来没有完全习惯使用枚举 - 我想知道,我应该跳过枚举并直接转到结构或类吗?:

首先,我发现了一个断言,即“枚举是邪恶的”,但我觉得这是一种过度概括,并没有直接解决我的用例。

如果我确实要进行枚举,那么会很好地讨论如何通过向枚举添加额外的元数据来扩展我的里程

接下来,我碰到的吉米·博加德的讨论枚举类和“进一步讨论战略和鉴别NHibernate的

我应该跳过枚举并直接进入枚举类吗?或者有人对如何向我的域模型添加简单的实体鉴别器有任何其他建议。

更新:

我还要补充一点,NHibernate 和 LINQ to SQL(可能还有所有其他与 ORM 相关的数据访问方法)都使用枚举非常有吸引力,因为它们让您可以在映射中透明地映射鉴别器列

映射一个枚举类会那么容易吗?

相关问题:


免责声明:

尽管我粗心地使用了术语实体(带有小写的“e”),但我并没有声称在这里讨论 DDD...

Dmy*_*iak 5

今天枚举是邪恶的,明天 OOP 可能是邪恶的,而 AOP 会很好。

只需使用适合工作的正确工具即可。记住,保持简单......

如果枚举只是为了告诉对象的类型 - 不要打扰,使用它。

如果其中包含一些业务逻辑,那么它可能是另一个类。


Jer*_*Gee 2

那些枚举类看起来很整洁,我经常嫉妒地看着 Java 的枚举。

我认为通常的规则适用:做可能有效的最简单的事情。如果您发现枚举上有多个switch,那么这就是一种气味,是时候考虑您发现的模式了。

否则,为什么要给自己背负一些不需要的东西呢?