symbian命名规范

本文介绍了SymbianOS上应用程序的命名规范,包括类、结构、变量、函数、宏、枚举和常量的命名规则。这些规则有助于提高代码的可读性和一致性。

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前缀;
类型和成员应该是有意义的,没有二义性的名字。
枚举应当被封装到相关的类里,那样就不会与全局名字产生冲突。
下面是一个定义和使用枚举的例子:
class TDemo
{
public:
enum TShape {EShapeRound, EShapeSquare};
};

TDemo::TShape shape=TDemo::EShapeSquare;

常量的命名
常量名包含一个K前缀,例如:
const TInt KMaxNameLength=0x20;

--------------------------------------

 对比自己的编程习惯,上面提到的规范中有几点是自己还没有引起足够注意的

"一个返回成员变量的函数,它的名字通常是除去前缀“i”的变量名"

     我的习惯是用Get+变量名,现在还是觉得遵循symbian的规范比较好,省去在每个获得变量的函数名前加Get,简洁又美观。

“枚举当做简单类型,拥有T前缀;枚举成员拥有E前缀;”
     这样的话,从枚举变量名就可以知道它究竟是用于类的成员变量还是一个公共的枚举类型。

“枚举应当被封装到相关的类里,那样就不会与全局名字产生冲突”
     只要该枚举变量与其他类没有关系,封装在类里面还是很好的做法。

“常量名包含一个K前缀,例如:const TInt KMaxNameLength=0x20;”
     不明白为什么那么人喜欢用十六进制表示整型,干嘛不直接用十进制表示呢?一看就知道数值大小多好啊。

--------------------------------------
 

下载前可以先看下教程 https://pan.quark.cn/s/16a53f4bd595 小天才电话手表刷机教程 — 基础篇 我们将为您简单的介绍小天才电话手表新机型的简单刷机以及玩法,如adb工具的使用,magisk的刷入等等。 我们会确保您看完此教程后能够对Android系统有一个最基本的认识,以及能够成功通过magisk root您的手表,并安装您需要的第三方软件。 ADB Android Debug Bridge,简称,在android developer的adb文档中是这么描述它的: 是一种多功能命令行工具,可让您与设备进行通信。 该命令有助于各种设备操作,例如安装和调试应用程序。 提供对 Unix shell 的访问,您可以使用它在设备上运行各种命令。 它是一个客户端-服务器程序。 这听起来有些难以理解,因为您也没有必要去理解它,如果您对本文中的任何关键名词产生疑惑或兴趣,您都可以在搜索引擎中去搜索它,当然,我们会对其进行简单的解释:是一款在命令行中运行的,用于对Android设备进行调试的工具,并拥有比一般用户以及程序更高的权限,所以,我们可以使用它对Android设备进行最基本的调试操作。 而在小天才电话手表上启用它,您只需要这么做: - 打开拨号盘; - 输入; - 点按打开adb调试选项。 其次是电脑上的Android SDK Platform-Tools的安装,此工具是 Android SDK 的组件。 它包括与 Android 平台交互的工具,主要由和构成,如果您接触过Android开发,必然会使用到它,因为它包含在Android Studio等IDE中,当然,您可以独立下载,在下方选择对应的版本即可: - Download SDK Platform...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值