打印

关于C/C++中 常量应用的注意事项 (转)

[复制链接]
1616|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
思行合一|  楼主 | 2011-3-2 21:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
常量用来 增强程序的可读性和可维护性,如果这一点做不到 ,这些东西就是被用滥了
下面的常量,后面加了* 号的 是 我写的,
问题:像这些 很简单的 ,而且 没有 实际意义的 东西不要搞成常量了,敲一大堆大写字母。
当然如果你的字符串有格式 要拼出来大可以写一个 注释: yyyy-mm-dd “-”   然后一切都明白了
const char CONST_CHAR_COMMA   = ',';   //  逗号  //* 逗号字符
const string CONST_STRING_COMMA = ",";   //  逗号  //* 次字符串是字符
const string CONST_EMPTY_CHAR   = "";   //* 此语句应该是说 EMPTY_STRING
const string CONST_SEPARATE_CHAR = "_"; // 分割符  //*这一句应该是说 下划线
下面的 比较严重,常量 引用 常量, 贴到代码里,鬼才知道这是什么呢,反正我是看不懂
看不出常量的类型,用的时候还是要翻头文件,

const int CONST_SHOWTYPE_GRID = ST_GRID;
const int CONST_SHOWTYPE_LINE = ST_LINE;
const int CONST_SHOWTYPE_BAR  = ST_BAR;
const int CONST_SHOWTYPE_PIE  = ST_PIE;
const int CONST_SHOWTYPE_MAP  = ST_MAP;

过多了使用常量 有以下几种坏处:
如果一个模块使用了此头文件,常量将被链接到所有使用此头文件的代码中,如果此常量文件很多——哪怕你只是用了 一条, 也许你就要加 好多K的可执行文件大小,如果模块很多,更严重。
不要把什么都随意写成常量, 实际用着方便才是硬道理。
本来是为了容易维护, 等常量文件足够多, 足够大的时候, 你再也不会谈可维护性, 一个字段改变了,你还是要编译器来为你搜索。
将常量尽量局部化, 如果本模块使用,甚至只有本 文件(cpp)使用,就限制在其中好了。很多常量不是全局的都需要知道,自己模块内部的,一定不要让别人看见,除非 关键的 全局常量。
常量要放在它应该在的场景,小心慎用。
不要看着书上说—— 应该怎么怎么样才好。经验不是万能的,经验是在一定的条件和过程下产生的,如果不加消化的滥用, 将来会很痛苦的, 总有一天你会记不清那是什么,为什么要定义那个东西,注释有时候只是对写它的人有用,别人根本看不懂你的注释——因为时过境迁,很多东西不再需要,留下来还不敢删除了,只能是 代码中的 垃圾

本文出自 “queniao” 博客,请务必保留此出处http://queniao.blog.51cto.com/10636/58194

相关帖子

沙发
hotpower| | 2011-3-2 22:14 | 只看该作者
本帖最后由 hotpower 于 2011-3-3 00:21 编辑

const和#defind最大的区别在于类型的指定。前者是c++提倡的

使用特权

评论回复
板凳
金鱼木鱼| | 2011-3-2 22:14 | 只看该作者
跟着例程肯定是没问题的!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

215

主题

1391

帖子

2

粉丝