如何避免使用枚举?

在问这里问题之前 ,我从未认为(枚举)是“坏事”。 对于那些认为它们不是最佳实践的人,有哪些方法/模式可以避免在代码中使用它们?

编辑:

public Enum SomeStatus Approved = 1 Denied = 2 Pending =3 end Enum 

我喜欢海龟 类的枚举 。

在Fowler的Refactoring中描述了枚举的问题,它被认为是代码气味 。 它与类型安全无关,而是强迫您在代码中遍历switch语句,从而违反了DRY原则

State模式是同一结构的更好模型,因为它允许您在同一个类中实现和改变与相同状态相关的逻辑。 这也增加了内聚力并减少了类耦合。

我认为使用枚举是一件好事。 它提供强大的类型安全性。

它们有时会有一些缺点,但这通常与预先不知道每个可能选项的情况有关。 如果您有一组固定的选项,例如您的示例,那么强类型枚举是一件好事,不应该避免。

枚举的要点是它只在一个地方定义 (数据库术语中的规范化)。 如果这个枚举合法地是你正在写的课程的一部分,那么继续。

否则,特别是如果你发现自己多次声明它,重新考虑你的枚举是什么。 它实际上是否携带数据? 是否有足够的值来考虑将可能性存储在数据库中?

我喜欢在相关的值集上放置易于使用和理解的名称的枚举。 我只是不喜欢c#实现。 使用您的示例枚举:

 SomeStatus status = 17; 

这种编译和运行没有抱怨,即使17是超出界限。

delphi有更好的枚举(至少,它曾经使用过 – 自从我使用它以来已经好几年了)