2009年9月

时间很快来到9月。回顾8月,唉,太浪费时间了。整个8月都不知道忙了啥,就连工作也是超无聊(每星期都有好几天没具体工作任务)。于是,希望9月来个突破!

今晚赶紧吃完饭后,独自到中大自习。本来想看《系统架构设计师教程》(想到11月去考一下),但精神不佳,于是拿出《高质量程序设计艺术(Code Quality: The Open Source Perspective)》来看。

首先第1章翻了几翻便过去了。到了第2章看到几个挺好的话题:

1)一个8位的硬件计数器是否能用来对一个256字节缓冲区的成员进行计数?
    该问题有点不明白,“硬件计数器”是什么?“一个256字节缓冲区的成员”又是什么?我觉得该提问者想说,8位的处理能力最大是255字节。纯猜测,跳过……

2)多路处理的问题
    处理多个分支的代码(如switch语句)时,作者提出以下几个处理方法:
(1)在每个分支或步骤添加注释,即具体说明;
(2)代码与复合数据成员(结构体与类)之间的关系;
(3)switch中,case的值要覆盖所有可能的情况,或者用defualt来处理可能遗漏的情况;
(4)或者根本不用多路处理,把数据与代码直接联系在一起,可以通过为原本是一个case成员的处理创建一个子类,或者是将各个实现特定接口的函数与每个数据成员相关联来实现。

3)软件发布版中的隐藏功能
    由于软件发布版中的隐藏功能,如调试功能,会带来潜在的危险与额外的资源消耗,所以应该避免。著名的反面教材是“莫里斯蠕虫”病毒,利用Unix的邮件传送代理sendmail中的调试代码,来执行命令,达到自我复制、传播的目的。

4)溢出的问题
    一个简单的表达式子:
int a = b * 100 / 255;
    当b接近int的最大值时就可能溢出,但改为这样就可以避免问题发生:
int a = b  / 255 * 100;