所以我最近读了一本专门关于依赖注入的书。在这本书的某处,它指出枚举是一种代码味道。...
我想获得SO'ers的普遍共识。我需要设计一个带有一些核心核心类的相当大的应用程序,并在以某种方式寻求SO同事在这种情况下会使用的设计原则方面寻求帮助,然后再致力于一种方法或另一种方法,这使得以后很难更改。
public enum Foo
{
LovelyFoo,
TerribleFoo
}
OR
使用带有Contants的静态类
public static class Foo
{
public const string LovelyFoo = nameof(LovelyFoo); //or "Lovely Foo";
public const string TerribleFoo = nameof(TerribleFoo); // or "Terrible Foo";
}
然后当然可以在需要时使用它
Foo MyFoo = Foo.LovelyFoo;
OR
string MyFoo = Foo.LovelyFoo;
答案 0 :(得分:1)
仅仅因为某些东西会被滥用并不意味着它不好用。
您没有给出实际的用例,而只是foo示例,很难分辨出这种气味。
枚举适用于紧密绑定的事物集,例如一周中的几天。
让常量为常量,让枚举为枚举。但是,如果您发现自己想要使用大量的枚举和开关,那么对于泛型或多态性来说,这可能就大声疾呼了。仅仅因为它们看起来整洁,打字和精彩并不意味着您的代码应该充满了它们。
最后,在您的用例上运行Microsoft测试。就是说,Microsoft会怎么做,在BCL中您看到此示例的地方是常见的,Microsoft是否会像这样使用它们。尽管这不是节省的恩典,但是如果您发现自己的写作是不可预测的怪异而奇妙的结构,并且没有其他人看到过,那么您可能正在做错事