看了代码,给点建议:
1.代码的可读性和可维护性有下降的趋势,导致该问题的主要原因是早期在架构设计上的考虑不足,而后期又在不断的加入新的功能。建议以后的工作主要以调整架构为主,在架构调整完成之前避免加入新的功能。
2.建议采用一个.c文件对应一个.h文件的形式组织源代码,对每个.c文件都将其编译为.obj文件,然后将所有的.obj文件打包为.lib文件,这样做的好处在于linker在链接的时候会只链接被引用到的.obj模块,没有被引用到的模块不会被链接到.exe文件中,这样可以避免使用预编译开关来控制编译体积的大小。并且以二进制库形式提供的话,将更加安全和易于使用。
3.架构的调整工作量是巨大的,几乎会修改所有的代码,这是一个长期的过程,但是希望作者不要放弃。我现在做VGA13H也是在工作之余,想做的时候做做,基本上有空都是出去玩,或者和同事一起打游戏,但是我从来不放弃对VGA13H的维护,哪怕每周只看看代码。把它当做业余爱好,以及追求完美,是我的VGA13H的设计理念。这个和工作不一样,工作的时候很难做到完美,工作有开发周期的限制,还有功利性。
4.建议作者考虑采用更加高效的编译方式,我目前都是采用make工具进行代码编译的管理,做个推荐。
5.建议将屏幕也抽象为一个位图对象,而所有的位图都抽象为内存中的一个二维数组,所有对位图的操作都抽象为对内存的操作,这样的好处是可以保证这部分代码与硬件和平台的无关性,从而增强了代码的可移植性。而将内存抽象为以下的两种类型,1.线性内存, 2.页式内存,定义相关的接口 ,在接口的上层实现线性内存与页式内存的相互操作,而在下层则可以SVGA的页实显存和EMS内存等等方式来实现这个接口,页式内存是一个抽象的概念,它的实现方式是多样的,甚至可以使用磁盘文件的方式去实现这样的接口,就类似于虚拟内存。在上层的BMP对象只需要关心它的w, h, 位深度, 调色板(如果有), 以及使用的内存类型和内存的驱动(提供一个函数指针),即可完成对位图的全部操作。
[此贴子已经被作者于2006-12-7 9:47:10编辑过]