首页
|
新闻资讯
|
网站运营
|
网络编程
|
数据库
|
服务器
|
网页设计
|
图像媒体
|
网络应用
|
搜索优化
|
资源下载
|
动网主机
|
DVBOX
本站内
互联网
ASP论坛
ASP.Net论坛
PHP论坛
程序开发
→ 阅读文章
Palm OS应用程序设计指南之十一
作者
:
来源
:
阅读 数 459 人次 , 2006-4-25 9:07:00
随着程序变得越来越大,我们会发现很多问题。这些问题或许在编制几千行代码时不会出现,但是当编到上万行或更多时并且程序由不同的程序员来编写,在运行时问题就出现了。
这就要求程序有经深思熟虑的结构和详细的注释。在编制大程序时主要要考虑两点:
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
收藏本文
打印本文
论坛讨论
关闭窗口
· 上一篇:
Palm开发疑难七问七答
· 下一篇:
EVC开发实例之保存信息(一)
·
基于Web的系统测试方法
·
走出软件质量误区
·
Palm开发工具及编程术语简介
·
架构性宣言:MIDP2.0中的工厂设计模式
·
简单对象访问协议(SOAP)初级指南
关于本站
|
联系我们
|
业务合作
|
客户案例
|
诚聘英才
|
广告合作
|
收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006
Cndw
.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077