Symbian基本规范:命名约定

概要

Symbian OS上的应用程序使用一组标准的约定来命名类(class)、结构(struct)、变量(variable)、函数(function)、宏(macros)、枚举(enumeration)和常量(constant)。本主题解释这些约定的意思。

类(class)的命名

大多数类的命名是通过加前缀字符C,T,R,M构成的。下面简单说一下它们表示的意思:

C:C前缀表示类从CB ase派生并应该基于堆构造。

T:T前缀表示一个简单类,这种类不拥有任何额外的资源。

R:R前缀表示一个资源类,它包含其它位置拥有资源的句柄。

M:M前缀表示一个接口类,它定义了接口但需要派生类实现。

有关前缀更详细的论述请参考类类型(Class types--Developer Library » Symbian OS Guide » Essential idioms » Class types)。

那些由静态函数构成的类没有前缀字符。除了前缀字符,类名常常通过一个名词表示类的用途。

结构(struct)的命名

结构(struct)类型作为T类对待,因为它也不拥有任何额外的资源,它的前缀通常是T(但也有一些以S开头)。

变量的命名

成员变量的名字以i开头,例如:iMember,这样可以很容易检查某些清除相关的规则。参数名以a开头,例如:aControl或aIndex。局部变量命名不需要前缀字符。全局变量应避免使用,使用时则第一个字母大写。

Symbian不使用匈牙利(Hungarian)或是其它在名字中包含类型信息的名字方法:那样的话看起来很复杂并且当系统有几百个类时不容易管理,因为它们总是不够准确:函数通常很短,这样可以方便的看到其中定义的变量的类型并且类浏览器(class browser)提供了快速找到类成员类型的方法。

函数的命名

函数的名字应当指出它要做什么,通常用动词表示,“获得”类的函数是例外的情况:一个返回成员变量的函数,它的名字通常是除去前缀“i”的变量名:

inline RWindow& Window() const { return iWindow; };

一个对应的“设置”函数包含单词“Set”,例如:SetWindow()。

出现错误而终止函数时Symbian平台并不使用标准C++的异常处理,它有自己名叫leave的异常处理系统(参考» Developer Library » Symbian OS Guide » C++ API guide » Base » Memory Management » Cleanup Support Overview)。可能产生leave的函数名字以L结尾,它使得检查错误的过程更简单些。函数new (ELeave)也可能产生leave。最基本的产生leave的函数是User::Leave()。任何函数中包含有上面的函数并且没有捕获异常,那么它就可能产生异常,在写代码时它的名字就应该以L结尾。如果一个函数调用另一个可能产生leave的函数,它的名字也应该以L结尾。

与leave机制关联的是清除栈(cleanup stack),它可以在leave产生时恢复在堆上分配的内存。把资源放到清除栈(cleanup stack)上的分配或构造函数以LC结尾,例如,经常把new,PushL(),ConstructL()按顺序封装到NewLC()函数里:

CS* s=CS::NewLC(p1, p2);

上面的操作是分配对象,初始化并把它放到清除栈(cleanup stack)上,这个过程可能会产生leave(它总是包含PushL()的调用),所以这类的函数名总是包含有L,因此形成了以LC(C指清除栈(cleanup stack))结尾。

获得对象的所有权并销毁它的函数的名字以D结尾。UI框架中对话框的例子:

CEikDialog* dialog=new (ELeave) CBossSettingsDialog;

if (dialog->ExecuteLD(R_BOSS_SETTINGS_DIALOG))

{

// handle successful settings

}

ExecuteLD()函数包含第二阶段构造(second-phase construction),显示对话框然后销毁它的操作。

宏的命名

宏的名字全部用大写表示并用下划线分隔单词。

枚举的命名

枚举按下面的方法命名:

枚举当做简单类型,拥有T前缀;

枚举成员拥有E前缀;

类型和成员应该是有意义的,没有二义性的名字。

时间: 2024-09-11 10:07:19

Symbian基本规范:命名约定的相关文章

Symbian基本规范:描述符

概要 描述符既是Symbian OS中基本的东西,同时也是比较非面向对象(non-OO)和面向对象(OO)设计方法的极好的例子. 在C语言中字符串是下面这样的: char *hello = "hello"; 上面的语句使设置一些内存使其包含'h','e','l','l','o','\0'6个字符.strlen()函数从开始字节扫描内存直到以空字符('\0')结尾.如果你想扩展字符串,你需要知道给它分配了多少内存. 描述符抽象 通过两个抽象类表示出字符串的基本需要:TDesC和TDes.

Symbian基本规范

DLL中的可写静态数据 Symbian OS是基于ROM来处理程序的.DLL是通常是存储在ROM中的(运行也是在ROM中),所以它是不可写的.虽然有时把DLL装入RAM中运行,但Symbian OS仍旧假定DLL不可写.因此Symbian OS中的DLL没有数据段(Data Segment ),这就导致了DLL中不能包含有可写的静态数据,不管其是否被初始化. 静态数据是在函数之外定义的任何数据,例如:TbufC<20> filename:Void SetFileName() {------ }

Symbian系统开发专题

symbian入门系列:applicatoin对象研究 symbian入门系列: framework symbian入门系列: document对象分析 Symbian学习总结-基础篇-Symbian C++中的异常处理 Symbian框架 Symbian游戏编程应用程序开发 Symbian开发工具Carbide简介 Symbian内存管理的二十二条军规 Symbian学习笔记(21)--原来还有这个工具wsdl2cpp,访问webserv Symbian学习笔记(20)--用gSOAP更简单地

Symbian框架

Symbian开发的软件大小一般在200k左右, 屏幕大小为:176*208(老版本) 240*320(新版本主流) 352*416(新版非主流); Symbian的程序是运行在AppRun.exe的程序上面,AppRun类似虚拟机的概念; 注意:Symbian不允许有全局变量,但支持全局常量.(在3.0中,Exe支持,DLL不支持) 以下介绍Symbian的框架部份,一些基本的部分就不详解了: 1.框架程序入口:E32DLL:该方法将程序启动路径给RunApp进行启动,在启动之前会加载这程序所

Web开发流程规范的五个要点

web|规范 开发流程及规范:Web 开发的分散性和交互性,决定了 Web 开发必须遵从一定的开发规范和技术约定. 只有每个开发人员都按照一个共同的规范去设计.沟通.开发.测试.部署,才能保证整个开发团队协调一致的工作,从而提高开发工作效率,提升工程项目质量. 一. 项目的角色划分 如果不包括前.后期的市场推广和产品销售人员,开发团队一般可以划分为项目负责人.程序员.美工三个角色. 项目负责人在我们中国习惯称为"项目经理",负责项目的人事协调.时间进度等安排,以及处理一些与项目相关的其

国外英文的移动设备网页设计UI规范

文章描述:移动手持及平板电脑和网页应用设计UI规范. Official user interface (UI) and user experience (UX) guidelines from the manufacturers, links to which you can find below, are a source of inspiration for mobile web and app design. Here, you will find guidelines, samples,

JAVA 编程规范

编程|规范 1. 应用范围 本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JAVABEAN,EJB)均应遵守这个规范.同时,也可作为其它项目的参考. 2. 设计类和方法 2.1 创建具有很强内聚力的类 方法的重要性往往比类的重要性更容易理解,方法是指执行一个统一函数的一段代码.类常被错误的视为是一个仅仅用于存放方法的容器.有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有方法放入单个类之中. 之所以不能正确的认识类的功能,原因之一是类的实现实际上

PHP 编码规范

编码|规范 缩进 缩进使用4个空格,而不是 tab.如果你使用 Emacs 编辑 PEAR 代码,你应该设置 indent-tabs-mode 为 nil.下面是一个 mode hook 的示例,用于设置 Emacs 符合缩进标准(你必须确保在编辑 PHP 文件时,这些设置发生作用):   (defun php-mode-hook ()  (setq tab-width 4        c-basic-offset 4        c-hanging-comment-ender-p nil 

网站开发规范及流程v1.0

规范|开发规范 Web 开发的分散性和交互性,决定了 Web 开发必须遵从一定的开发规范和技术约定,只有每个开发人员都按照一个共同的规范去设计.沟通.开发.测试.部署,才能保证整个开发团队协调一致的工作,从而提高开发工作效率,提升工程项目质量. 一.项目的角色划分 如果不包括前期和后期的市场推广及销售人员,开发团队一般可以划分为项目负责人.程序员.美工三个角色.项目负责人习惯称为项目经理,负责项目的人事协调.时间进度等安排,以及处理一些与项目相关的其他事情.程序员主要负责项目的需求分析.策划.设