Palm OS应用程序设计指南之十一
日期:2008年3月27日 作者: 查看:[大字体 中字体 小字体]-
随着程序变得越来越大,我们会发现很多问题。这些问题或许在编制几千行代码时不会出现,但是当编到上万行或更多时并且程序由不同的程序员来编写,在运行时问题就出现了。 这就要求程序有经深思熟虑的结构和详细的注释。在编制大程序时主要要考虑两点:
1 怎样使程序容易维护2 怎样使程序可重用(reuse)
当然,我们想使程序可以被任何一个人都看得懂,容易维护并重用。特别是对Palm OS来说,由于它的很多应用窗体都十分相似,采取这样的策略将带来很大的效率。虽然PC的处理器速度和内存都在飞速的发展,但是就Palm OS现在的情况来看,必须要聪明的使用处理器和内存。但也不能忽视可维护性,只有具备好的可维护性,才能使代码更容易被优化。
这一章中,我们将接触到很多专业的编程策略。在学习的过程中,我们还将根据这些策略建立一些可重复使用的模块,希望你能在这些编程策略中得到益处。
通过这一章的学习,可为你创建Palm OS应用程序打下一个坚实的基础。
类型保护变量和可移植性
可移植性是代码可重复使用的关键因素之一。可移植性是指代码可以做很少的修改就能被不同的编译器所编译;并且只有将界面和代码分离(因为界面一般都是基于系统的,而代码要工作在不同的平台上)才能提高可移植性。
下几章中我们将以计算器的例子来证明下面讲到的内容。计算器的用户界面和程序代码被分离开来,这样就可以很容易将计算器程序应用到Windows 或Macintosh平台上。
为使程序工作在不同的编译器和系统下,使用类型保护变量是主要途径之一。或许你还不知道什么是类型保护变量,但是在本书中我们一直在使用类型保护变量——至少是使用Palm OS版本的类型保护变量。类型保护变量就是指:不是使用标准C中的数据类型如int或char,而是使用命令typedef来自定义的数据类型。
为什么类型保护是如此重要呢?这是因为在标准C中,如int在CodeWarrior C编译器中是16位,而在其它的一些常用编译器中包括GCC,它的长度都是32位。如果你在很多地方都使用了数据类型int而又想从CodeWarrior转换到GCC,那么由于类型int的长度问题就会引起很多的bug,数据结构要改变,数据库记录的大小也要改变。情况严重的话,程序将根本就不能运行。
不仅仅是类型int可以造成可移植性的问题。还有一些其它的类型存在此类问题,例如数据类型char,在日本,char是16位,而不是一般所指的8位。因此,如果要使所编制的程序国际化,那就需要重新做大量的工作。
有关类型保护变量和Palm OS,我的意见是如果你在写基于Palm OS的用户界面代码,就要使用Palm OS的类型保护变量。在Palm OS以后的发展中,其开发人员会小心的处理这些类型保护变量。这样你会发现只要使用了正确的类型保护变量,就可以很容易的将现有的版本升级到新版本。
如果你写的代码也将工作在其它的操作系统平台上,也应该使用自己定义的数据类型。当然,也不能再直接调用Palm OS的函数,利用自己的定义的函数名调用这些函数,或者在头文件中使用#define语句修改函数名来调用这些函数。
使用匈牙利符号(Hungarian Notation)
在看一个大块的代码时,很容易将在函数头部定义的变量的数据类型忘掉。使用匈牙利符号是解决这个问题的一个好方法,因为它可以使别人很容易看懂。在匈牙利符号中,它使用了一些字母在变量的开头,可以使你能记住变量的数据类型。例如,“c”代表char,“p”代表指针,所以cpBuffer代表指向一个缓冲区的char*变量。
匈牙利符号有很多样式。在表12-1中,是我的两个版本,我发现它们可以很好的应用在C、C++和Mac、Windows、Unix中,当然还包括Palm OS。在接下来的部分中,我将全部使用这些符号来定义变量。
字母数据类型描述和例子 a [] 数组符号:Char caBuffer[20] b Byte 8字节的数字变量:Byte bFlags c Char 字节:char c d Dword 32字节的数字变量:Dword dCounter e enum 枚举类型的变量:spEvent->eType f float 32字节浮点数:float fResult g global 全局性变量,即可以在所有的模块中使用:app_t gsApp h handle 在一些系统中是void*,其它的为Int:VoidHand hRecord i int 整型变量:Int iCounter j k const 在C++中为常量定义或返回值定义 l long 长整型:long Ivalue m member 结构或类的成员变量:char mcaBuffer[20] n double 64位的浮点数:double nBigNum o Boolean 布尔值,真或假:Boolean oFirstPass p pointer 指针:void* vpPointer q r raw 二进制数据类(C++) s struct 结构或类:sEvent t text 文本型类(C++) u unsigned 无符号数:unsigned bong ulNumber v void 空数据类型:void* vpPointer w Word 字,一般为16字节:Word wNumber x y z 进入讨论组讨论。
- [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] 下一页
-
- Palm OS应用程序设计指南之十一 相关文章:
- ·下一代Palm操作系统ALP最新截图曝光
- ·PALM上的电子书软件-ISILO
- ·一步一步学习,用CJKOS汉化你的PALM
- ·PalmSource新CEO即将访华 海尔手机已成客户
- ·PalmSource移软推出数据同步化解决方案
- ·美国Palmbeach大学服务器整合改造案例
- ·在palm中创建界面图标
- ·Palm OS应用程序设计指南
- ·Palm OS应用程序设计指南之二
- ·一个PALM OS上的入门列子Hello world
- Palm OS应用程序设计指南之十一 相关软件
- ·《魔兽》录象:Napalm_Sidy vs wNv.sai
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:EVC开发实例之保存信息(一)
精品推荐
热点TOP10
- ·传道解惑 软件开发技术名词解密
- ·EZ-USB 68013A开发指南
- ·图象处理中的边缘检测------canny算子
- ·Palm OS应用程序设计指南之十一
- ·[分形]DLA团簇模型的摸拟
- ·ARM的嵌入式Linux移植体验之BootLoader
- ·ghost for unix
- ·利用 wordXP 实现自动排班
- ·Windows下BMP文件的读取及显示
- ·samba和openldap结合实战
- ·14.4 Function members
- ·MIDP 2.0 开发J2ME游戏起步之二
- ·用汇编编写DOS下的内存驻留程序(3)
- ·BASH Shell简介(1)
- ·数值计算程序大放送-矩阵运算
- ·ARM的嵌入式Linux移植体验之设备驱动
- ·Palm OS应用程序设计指南之十三
- ·苏睿暄Sql worm 2的源代码
- ·Visual C++ ADO数据库编程入门
- ·使用TurboGears和Python开发Web 站点
