- 论坛徽章:
- 0
|
原帖由 eunyoo 于 2007-2-27 22:37 发表
thx
差不多明白了...
最后一句:幻数在有些个别时候也会使用,是由于不得不用的原因,还是只是习惯问题?
这个我不太明白,可否请Edengundam兄讲解下?
比如一天有多少小时可以, 等等...这是一类
#define HOURS_PER_DAY 24
有些更偏重于使用枚举, 譬如网络通信使用的认证方法
enum method {
os_authentication,
pam,
kerberos
};等等
还有很个别情况下比如我要申请一个buffer打印一个int32的数值
这个int32的长度10个字节之内, 加上个null的话11位...这个时候可能会
char buf[32]; // or malloc
虽然申请大些, 但是申请这样的长度看起来更合适(2的指数).
还有一些很特殊的地方, 可能是编写偷懒之类的(postgre sql代码有这种情况, 很少), 譬如某些日志文件名是20个数字, 那么处理这个文件名时候, 可能就会直接用20..虽然这样做并不好.
尽可能不使用magic number在编程时候很重要.
magic number就是直接使用数值来工作的. 譬如最早UNIX的文件描述符: 0, 1, 2. STDIN, STDOUT, STDERR就是他们的名字, 用后面的更具有可读性, 而且每次都使用数值还容易出错. 很多人申请1024的buffers, 但是操作时候访问1223这个问题, 显然是一个不小心的错误, 后果确实相当恶劣的.
magic number的处理可以做为一个程序员基本素质的考察点...^^..~~
[ 本帖最后由 Edengundam 于 2007-2-27 23:46 编辑 ] |
|