一位同事做新feature时加了上面红色的两个,由于存report的时候对于这个Enum只是简单的转成int存起来,大家都知道Enum默认是从0开始,按顺序来,原先存的第6个是PeergroupPercentile,report里存的就是数字5,新加了两个在上面后,数字5就解析成PeergroupRank了。 其实项目里大部分代码对Enum是有所防范的,如: 1 public enum DisplayBenchmark 2 { 3 None, 4 Benchmark1, 5 Benchmark2, 6 CategoryAverage, 7 CalcBenchmarkId, 8 CalcBenchmarkType, 9 CalcBenchmarkCdp, 10 } 11 12 public static class DisplayBenchmarkCode 13 { 14 const string BENCHMARK1 = "bm1"; 15 const string BENCHMARK2 = "bm2"; 16 const string CATEGORY = "ca"; 17 18 public static DisplayBenchmark Parse(string code) 19 { 20 switch (code) 21 { 22 case BENCHMARK1: 23 return DisplayBenchmark.Benchmark1; 24 case BENCHMARK2: 25 return DisplayBenchmark.Benchmark2; 26 case CATEGORY: 27 return DisplayBenchmark.CategoryAverage; 28 } 29 return DisplayBenchmark.Benchmark1; 30 } 31 32 public static string Convert(this DisplayBenchmark type) 33 { 34 switch (type) 35 { 36 case DisplayBenchmark.Benchmark1: 37 return BENCHMARK1; 38 case DisplayBenchmark.Benchmark2:
Read full article from Enum引发的血案,反思
No comments:
Post a Comment