http://zeroliu.blogdriver.com/zeroliu/1266175.html
Symbian OS C++学习笔记1命名约定
------------------------------
最近学习Symbian开发,正在看人民邮电出版社的《Symbian OS C++ 高效编程》(http://www.china-pub.com/computers/common/info.asp?id=25539),英文书名为《Symbian OS Explained: Effective C++ Programming for Smartphones》
------------------------------
在书中“关于本书”部分以及第一章,主要讲述一些命名约定。在Symbian OS中开发应用程序中的常用的命名规范,比C++中更为严格。而且,这些由人为来遵守,而无法象java一样依靠编译器来保证,所以需要特别小心。以下内容参考了“Symbian入门指南-项目文件&命名规范” http://blog.csdn.net/welcome_ck/archive/2004/12/28/232327.aspx
------------------------------
1,类名
T类(如TDesc、TPoint)T类没有析构函数。它们的行为类似于内置类型。这是为什么所有内置类型的typedef都以T开头的原因。T类可以作为自动变量而分配、作为其他类的成员而分配,或位于堆上
C类(如CActive、CBase)从CBase派生的所有类。C类总是分配在默认堆上。分配对象时,CBase的operator new()将所有成员数据初始化为零。CBase也包括虚析构函数,因此通过对CBase*指针调用delete,正确析构它指向的任何对象
R类(如RFile、RTimer)拥有资源而不是位于默认堆上的所有类。通常分配为成员变量或自动变量;在少数情况,可分配在堆上。大部分R类使用Close()来释放资源
M类(混合类,等价于java中的接口,如MEikmenuObserver)由纯虚函数组成,不包含成员数据。
静态类(如User、Math)完全不能实例化的静态函数组成。这种类是库函数的容器。
------------------------------
2,数据名
枚举常量(EMonday..)枚举中的常量,枚举本身应该具有T前缀,而枚举常量是枚举的成员;#defined常量有时也使用E前缀
常量(KRgbRed..)#defined类型或const TInt类型的常量
成员变量(iDevice、iX)任意非静态成员变量
参数(aDevice)声明为参数的任意变量,“a”代表参数
自动变量(device、X)声明为自动变量的任意变量
------------------------------
3,函数名
Symbian OS里,首字母的意义不如末字母重大。
void ConstructL();//_L():尾字母为L,表示异常退出函数,可能需要分配内存、打开文件等。一般来说,要进行一些由于资源不足或其他与环境相关的条件而可能失败的操作。调用这类函数时,总需要考虑异常退出时发生的情况。
CPhilosopher* NewLC(); //_LC():和L结尾的函数基本一致,只是分配对象后,将它推入清理栈(这个概念以后文章会讲述),如果函数失败,则异常退出。
【虎.无名:补充】TInt ExecuteLD(TInt aResId); //_LD():以D结尾意味着函数将删除在其中引用的对象。
还有一些函数的命名要求不是十分严格,可以仿照C++中的命名规范。
------------------------------
Ch1. Symbian OS中的类命名约定 【虎.无名】
基本类型:为了支持编译器无关性,在代码中尽量使用SymbianOS提供的内建typedef类型,而非原是类型。如:TIntX/TUintX(x=8,16,32,64),TReal32/TReal64=TReal,TTextX(x=8,16),TBool=int/ETrue/EFalse,用TAny*替代void*。
T类:不可以有(析构)函数,也不包含任何具有析构函数的数据成员。常常不定义缺省的(构造)函数。(可以)在堆栈上创建。可以具有“使用”关系(弱聚合)而非“拥有”关系(强聚合)的指针和引用。可用来定义C风格的结构体(以前版本使用S前缀)。T前缀也可用来修饰枚举类型(如enum TMouthsOfYear {EJanuary=1, EFebruary=2,...})
C类:都是从CBase派生出来的(在e32base.h中定义):1)具有虚拟构造函数;2)重载的new操作符,进行“零初始化”。C类对象必须总是在(堆)上创建。绝对不可以使构造/析构函数发生异常退出。
R类:为了避免构造/析构函数异常退出,最好采用“两步构造法”,定义Open()/Close()等方法。R类很少有(析构)函数,一般也不需要。R类通常很简单,一般没有显式拷贝构造或赋值操作。对同一句柄多次Close()安全,但对相同资源的多个句柄分别Close()不安全(试图释放一个失效句柄)。使用CleanupClosePushL()或CleanupStack::PushL(TAny*)确保资源被清除,后者简单调用User::Free()来完成。
M类:混合(mixin)的思想,用于实现多继承。通常是抽象接口类(只有纯虚函数),或者用来定义观察者类。注意定义顺序,先继承一个C类,然后才是多个M类。
静态类:只包含静态成员函数的类,不需要名字前缀。
【注意:所有规则都有例外!】如内核部分驱动类,堆描述符类HBufC。多思考一下例外的原因(历史原因、效率原因、具有不同的特性和行为)
------------------------------
【虎.无名:20070321补充】类型名字中,以C结尾的表示不可变类型,如(参考Ch5.3)不可修改的描述符TDesC、指针描述符TPtrC等。
分享到:
相关推荐
《Symbian 开发三步曲》是一套深入解析Symbian OS C++移动设备开发的专业书籍,由John Wiley & Sons出版社出版。这套书籍分别涵盖了Symbian OS的基础开发、扩展功能编程以及针对S9版本的应用开发,是嵌入式系统...
SYMBIAN OS C++ 高效编程教程
《Symbian OS C++ for Mobile Phones》是一套完整的教程,涵盖了Symbian操作系统下C++编程的方方面面,包括Volume1、Volume2和Volume3三部分。这套教程旨在帮助开发者深入理解和掌握在移动设备上使用Symbian OS进行...
Symbian OS C++ 手机应用开发(第一卷)续3
2. **C++特性和陷阱**:Symbian OS的C++实现有其特定的规则和约定,例如EPOC Runtimes、RAII(Resource Acquisition Is Initialization)和异常处理。开发者需要了解如何避免常见的陷阱,如对象生命周期管理和内存...
刚才传了个Symbian OS C++手机应用开发是part01 《Symbian OS C++手机应用开发》 Richard Harrison 著 周良忠 译
刚才传了个Symbian OS C++手机应用开发是part01 《Symbian OS C++手机应用开发》 Richard Harrison 著 周良忠 译
《Symbian OS C++ for Mobile Phones, Volume 1》是针对移动设备开发的一款重要的学习资源,主要聚焦于使用C++编程语言在Symbian操作系统上进行应用开发。Symbian OS是过去广泛应用于智能手机的操作系统,尤其在...
### Symbian OS C++:初次深入探索 #### 引言 Symbian OS C++是一种专门为Symbian操作系统设计的编程语言版本,它在移动设备开发领域具有重要的地位。John Pagonis作为一位资深软件工程师及高级开发者顾问,在这份...
《Symbian OS C++ for Mobile Phones Volume 1》是一本深入探讨Symbian操作系统下C++编程技术的专业书籍,由Symbian自己的工程师团队撰写,旨在为移动设备开发人员提供扎实的基础,帮助他们掌握在Symbian OS上编写...
《Symbian OS C++ 手机应用开发》是一本深度探讨Symbian操作系统上C++编程技术的书籍,其源码涵盖了1-2卷的内容。Symbian OS曾是智能手机领域的重要操作系统,尤其在诺基亚手机中广泛应用。通过学习这本书的源码,...
总的来说,Symbian OS C++ for Mobile Phones V1-V3 的源码集合是一份珍贵的学习资料,它不仅揭示了移动操作系统的设计思想,也为开发者提供了实际操作的机会,帮助他们提升在嵌入式和移动领域的专业技能。...
Symbian OS C++ for Mobile Phones volume 2 中文版(Symbian OS C++ 手机应用开发)
总的来说,这份资源是深入研究Symbian OS C++编程的宝贵资料,通过学习和实践其中的源码,开发者不仅可以提升在Symbian OS上的编程技能,也能更好地理解移动平台的系统级编程,这对于转型到其他嵌入式系统或现代移动...
全书共分为21章,分别介绍了Symbian OS中的类命名约定、异常退出、清除栈、两段构造、描述符、良好的描述符风格、动态的数组与缓冲区、使用活动对象的事件驱动多任务、活动对象、Symbian OS的线程与进程、客户/...
“Symbian OS C++ 手机应用开发(第一卷,中文版)”这本书不仅为初学者提供了系统的学习路径,也为有一定基础的开发者提供了深入探索Symbian OS开发领域的宝贵资源。通过学习本书,读者将能够全面掌握Symbian C++...
Symbian.OS.C++手机应用开发(第三卷)PDF,真真的PDF上传文件,要的下载,文件共8个,请一一下载,下载后解压就可以了。 学习Symbian OS 的超经典作品。
《Symbian OS C++ for Volume 3》是开发者深入学习Symbian平台开发的宝贵资源,无论你是希望扩展已有的移动开发技能,还是对嵌入式系统编程感兴趣,这本书都能提供丰富的知识和实践经验。通过阅读书中的源代码示例...
《Symbian OS C++ for Volume 2》是关于Symbian操作系统开发的一本深入教程,专注于使用C++语言进行编程。这本书的第二卷可能是对第一卷的延续,深入探讨了更多高级主题和实践技巧。从提供的信息来看,包含的资源有...