上个星期写了些代码(Linux C代码,vi, gcc),不过很多是在别人的代码基础上在添加的自己函数的(功能增强的需要),内容很杂,一个文件4000~6000行,有些结构体内部成员都到了30 ~ 60个左右了,看的人真是很头痛,但也没办法,自己不可能大量的去修改别人的代码。于是我就把自己的代码用比较明显的注释同上面的部分隔离开来(本来想自己重新写个文件的,但要用到该文件中的局部变量),因为我写东西总是希望自己所写的东西可以在自己的控制范围内,但现在没办法,好象是不怎么好控制了。
晚上回来走到路上突然想到个问题,如果我的结构体中的一些成员自己不小心在什么地方修改了怎么办?如:Oracle表的列数,但自己得到来具体的列数后就不再修改了,但如果修改了呢?真的不好控制啊,代码太多了,太杂了。
很自然的想到const的使用了,但自己原来只在函数入口上使用过,其它地方对const真是不感兴趣,因为const就算我使用了一样可以来个强制转换让const不起作用的。在函数入口上使用const是为了告诉调用函数的人我的这个参数在调用完这个函数,该参数的值是不会发生改变的。
想来想去没找到什么好办法,还是用const吧,如:
typedef struct
{
...
const int ncol;
} ctab_struct;
void func(void)
{
int n;
ctab_struct ctb;
...
ctb.ncol = (const int)n;
...
}
只有这么使用了,当自己要给const值设置新的值的时候就来个const强制转换了,在别的地方自己尽量不要使用强制转换了,真的没有什么好的办法,只有靠这个简单的写代码规则来约束自己了,因为这样我们可以利用编译器来帮助一下自己了。
const允许你指定一种语义上的约束:一个特定的对象不应该被修改。而编译器将执行这一约束。它允许你通知编译器和其他程序员,某个值应该保持不变。如果确实如此,你就应该明确地表示出来,因为这样一来,你就可以谋取编译器的帮助,确定这个值不会被改变。
阅读(2414) | 评论(0) | 转发(0) |