如何避免使用枚举?

Ach*_*les 11 .net c# vb.net enums

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

编辑:

public Enum SomeStatus
 Approved = 1
 Denied = 2
 Pending =3
end Enum
Run Code Online (Sandbox Code Playgroud)

Mar*_*ann 27

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

国模式是相同的结构的一个更好的模型,因为它可以让你实现和变化在同一类涉及到同一状态的逻辑.这也增加了内聚力并减少了类耦合.


Ree*_*sey 9

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

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

  • 但要注意它们实际上并不提供类型安全,除了强制该值是枚举的基础类型的类型.`status =(SomeStatus)8374`将编译并运行得很好,但可能会破坏你的代码. (2认同)

Arn*_*psa 6

我喜欢海龟 类的枚举.