高质量的C代码.关于枚举类型的使用.2011.07.01

高质量的C代码.关于枚举类型的使用.2011.07.01
  未经许可,不的转载
  版权归属高雷个人
  联系方式:
  email:gaolei57521@gamil.com
    qq:38929568
 
 有人认为枚举类型 enum 就是 int类型,所以很少使用enum而用int,其实enum很有用。
1.1 变量定义

 


 首先枚举是一组常量,那么他就有很多变量的特点,比如内存中只有1份,很方便调试代码等等,
 其次他在定义时可以不必写他的值,这样对于一些不关心值的情况下就很方便了,比如一组游戏中的状态,或者连续的日期,
 最后他是自然分块的代码,阅读起来很清爽!
 推荐使用如下形式定义enum类型数据
 


 这么做的好处是,以后使用时,用Workday就好了!
1.2 枚举型的应用
 C语言中把枚举数据按整型数据处理,所以在任何整形数据可以出现的地方,都可以直接使用枚举变量,这其实会引起混乱,
 我们使用枚举类型都是用来起到标识作用,或者把一个数字起一个有意义的名字,比如0的意义就是sunday,这样代码中
 就可以用sunday来表示某种情况了!
 所以使用枚举减少为代码而编码的情况。
 
 在函数的参数中使用枚举类型的好处
 假设我们有一个函数,如下,

 

 

 处理一周,每天都要做什么事情的函数,形参是用来描述哪一天的,在方法内部处理编号为0到6的情况,
 像这样的函数,会有很多不利的因素,比如 形参int day 是啥意思?取值范围是什么?使用者很难知道该
 传什么样的数据等,内部代码也有问题,在其他人阅读代码的时候会问0代表什么,1代表什么,为什么只有6,等
 
 如果我们改写一下这段代码,如下
  

 

 这样就一目了然了,使用者只要要传入一个Workday类型的数据,当他不知道Workday类型是什么的时候,会很快找到
 typedef enum Workday{...};这段代码,然后就知道要传入的数据仅限
  sunday,  monday,  tuesday,  wednesday,  thursday,  friday,  saturday


 这7个,如果有另外的人员看这段代码的时候也很容明白代码的意思,假设我们代码中少写了礼拜四这一天的处理,
 会很快被发现,如果用4表示礼拜四的话,阅读代码的人就很难发现或者根本不知道case 4:的这种情况应该有,还是不应该有!
 
 根据IDE的不同,函数work(Workday day)的实参的检查是不同的,比如我用的VC6.0 的时候
 work(-1); work(123);都是允许的,而work( Workday.monday );却提示失败
 只能用 work( monday );
 听说VS2010就必须使用work( Workday.monday );这种形式,当然这是最理想的,因为他防止了实参的错误,也给阅读代码,
 或者代码检查带来了极大的便利,
 虽然我的VC6做不到这点,但起码在使用函数的时候我是知道要传入Workday类型的值了!
 这样就可以减少我在写代码的时候出错的几率了!
 
 
PS: 为代码而编码
 比如要做一周的事情安排
  
 这段代码就是用0来表示礼拜天,也就为礼拜天而编了个码,这个码就是0
 
 
 
 
 
 
 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值