花近一个月时间的研究,对ZX的手机开发平台有了大体上了解,总的说来,代码质量还算不错,可读性非常好。但其中有几点,觉得他们的做法值得考虑:
第一、所有窗口和控件的ID统一定义,放在一个文件中。这给引用某个窗口或者控件带来了方便,同时产生了很多副作用。如,增/删一个ID需要编译整个工程,这差不多要20分钟。这种引用的方便性造成大量的交叉引用,代码之间的耦合非常紧密。
第二、 资源和代码放在一起,不利于更新。要更新资源时,先要用一个GUI工具去把BMP转换成一个C语言的数组,没有命令行的工具,每次都要手工选择好多个目录,转换之后要拷贝到对应的文件中,然后再编译整个工程。同时资源的ID和图片的名称也没有一个致的对应关系,无法自动化,每次都手工去更新资源,浪费了不少时间。
第三、 文件系统没有一个抽象的接口。访问norflash的文件系统用EFS_系列函数,访问nandflash的文件系统用FFS_系列函数。调用者使用具体的实现函数,而不是一个抽象的接口,若要把以前放在norflash上的数据,移动到nandflash上去,要修改代码才行。
第四、 字符集处理的相关函数没有一个抽象的接口。代码中充斥着大量GB2UNICODE之类的函数,尽管系统提供了对UNICODE的支持,而实际上,若要支持不同的语言,可能不是那么容易。
第五、 没有专门公共代码库,大量重复的函数分散在不同的AP的代码之中。这给代码维护也造成一些不便。