给数字加上注解

说明

  • 阅读代码时,会发现很多用到的具体数字无法体现其自身的含义,只有存在注释或者变量命名清晰的情况下具体数字含义好理解点。
  • 这些令人无法理解的具体数字被称为幻数/魔数,幻数/魔数的存在会影响代码的可读性和可理解性,例如:源程序中的幻数/魔数,除了代码的作者之外,其他人可能根本不知道这些数字的含义是什么,甚至时间长了,作者也忘了为什么使用该数字。
  • 总结:具体的数字无法表明其自身的含义,只能借助字符串。

改善方式

基础方式

  1. 注释
  2. 命名清晰

宏替换

  • 使用宏替换,由于宏是字符串形式的,用户可以借助它理解数字的含义。
  1. 简单,单独的变量使用,例如:
* 变量定义
int a = 1;
* 判断
if (a > 1)

* 这些情况下通常会利用宏定义来代替这些幻数/魔数,例如:
定义:#define MAX 1
使用:a = MAX;  if (a > MAX)
  1. 数组使用,例如:
* GUI编程需要定义5个按键,Class,Pop,.... 
定义:button[5];
使用:button[0].txt = ""; button[1].txt = "";

* 这种写法不灵活,并且使用时容易弄混,如果需要交换一下,改动起来要非常细心;可以使用枚举来优化,如果还有额外的信息,可以通过数组或者map进行映射,button的txt属性都不同,改善如下:
enum ButtonItem{
    Min = -1,
    Class,
    Pop,
    ....,
    Max,
}

char **ButtonTxt[Max - Min] = {
    "Class",
    "Pop",
    ....,
}

定义:button[Max - Min];
使用:
1. 通用的设置可以通过遍历实现
for (i = (ButtonItem)0; i < Max; i++) 
    button[i].color = ""; 
    button[i].txt = ButtonTxt[i]; 
2. 不通用的设置可以单独设置    
button[Class].txt = "";

* 注意点:
1. 枚举中的Min和Max是额外添加的范围界定标示,从而能够实现枚举的遍历。
2. 枚举项的值不能手动改变,因为需要连续,遍历时才不会出错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值