您的位置:首页 > 其它

枚举的变化

2015-08-27 14:08 183 查看
  有些时候不遇到问题就不会停下来想一想。

  今天遇到个问题,就是一般的枚举就是定几个值,但是常常会有查询,显示等地方有特殊的情况,比如一个枚举为{男,女},查询条件可能是 {不限,男,女}这种情况。而且就定义成了一个{女=0,男=1,不限=9}这样的举枚。有人就反对了,说枚举都不能有这种不限这种字眼,还有一个原因就是项目中以前从来没有这么用过。我脑子没有思考太多,快速过了一遍,我以前有这样用过,而且也隐约记得以前有些枚举中会存在一个 默认,的项,也就是用于处一这种情况啊。

  当然处一于对整个项目的考虑,以及新人所以我还是改成了{男,女}这种情况。但是现在我在思考了,到底如果我的项目中存在这种情况我该怎么用,现在我有些确认应该加入这种项,前提是系统中有地方会出现这种情况下使用。比如有{男,女,不限}的情况,不管这种情况出现的多少,比如枚举有十次,但是这种情况有一两次,我建议还是加上。后面我会慢慢说明加上的原因。当然也欢迎大家一起来讨论,我们就是想在这中疑惑中,讨论中成长。

两情况下的对比。
1.当不加入这种所有项的情况会有什么问题。
1.1 在所有显示不限这种的界面我们都要人为的添加一份<不限-1>的keyvalue组合到界面,以供显示。
1.2 在最终条件判断的地方我们会把这种<不限,-1>这种值做一种不是很优雅的判断,如 (int)enumValue!=-1

2.如果加入了上面两种问题都解决了。
2.1 不用单独去处理,如果用到的地方很多效果更为明显
2.2 最后的判断则是很优雅的 enumValue!=EnumValue.Default

  

  他们的好处对比呢?
第一种情况我至今没有发现什么好处,同样要去判断额外的值,放到枚举中判断与分离出去有什么区别?有区别,就是分离出去不可控。因为你管理的是一个枚举也枚举外的一些值,你还得记住,这个枚举外还有一个-1代表所有。而使用枚举应该到系统中枚举所有用到的值加入枚举中,这样管理起来更为方便,而且可控。我只管你出现的值,不会去管你没出现的值。

  再来说说第二种的还有一个好处容错处理。比如一个列表一列显示性别,正常情况显示男或女,如果有一个值不是男女,我们界面的写法一样的是统一的。显是最后显示出不限二字,如果第一种方式可能就会又多写一点代码。好有人会说,那有些地方只要求显示男女的,你不是要删除一个项处理,不用,你统一处理,如果你第一种方式能处理过,第二种方式肯定能过,如果过不到说明数据有问题。即使用第一种方式数据有问题结果也是一样的。

  最后总结:
个人认为枚举应该包含代表的所有值,为了增加适应性和容错性,枚举可以加一些默认项,原始项,表示枚举的特殊情况,当然也是 看系统需要,如果确实不需要的情况就没必要添加,但是可能大多数情况都会用到。把所有的数值控制在枚举内,不要用一些枚举中没有的值来赋予枚举,今天你添加了个-1,明天你可能就添加一个-2,这样枚举还有意义吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: