QT 编码规范


软件测试系列 密 级:普通 文件编号:NO.6 文件类别:测试管理体系文件 发 放 号:1006 QT 编码规范 版本:1.0 北京梅梅出品有限公司 软件测试系列 第 - 2 - 页 共 8 页 - 2 - 版本说明 批准人 日期 版本号 发布说明 作者 签字 岗位 软件测试系列 第 - 3 - 页 共 8 页 - 3 - 目录 第一条:尽量不要直接引用 QT 示例(或其它符合 GPL 协议的程序源代码)中源代码.- 4 - 第二条:为每个目录维护一个修改日志(Change Logs),以记述对目录下源文件修改..- 4 - 第三条:工程文件命名遵循的原则...............................................................................- 4 - 第四条:函数注释三部分,功能、参数和返回值..........................................................- 4 - 第五条:变量、定义等注释..........................................................................................- 5 - 第六条:变量和函数的命名原则...................................................................................- 5 - 第七条:自定义类的命名原则......................................................................................- 5 - 第八条:类声明体中的编排..........................................................................................- 6 - 第九条:工程中目录的使用..........................................................................................- 6 - 第十条:界面布局原则.................................................................................................- 6 - 第十一条:为工程目录编制 ReadMe 文件......................................................................- 7 - 第十二条:添加文件修改、版权信息............................................................................- 7 - 第十三条:注意代码的兼容性......................................................................................- 7 - 第十四条:调试信息输出.............................................................................................- 7 - 第十五条:跨平台中的条件编译格式............................................................................- 8 - 第十六条:使用 qtopia 的条件编译格式 .....................................................................- 8 - 第十七条:其它编码的规范请参考《CC++编程规范》...................................................- 8 - 软件测试系列 第 - 4 - 页 共 8 页 - 4 - 第一条:尽量不要直接引用 QT 示例(或其它符合 GPL 协议的程序源代码)中源代码 如果引用了 QT 示例程序,请试图在内部使用不同的代码行来组织它。 如果直接使用了 QT 的源代码文件,请保留位于文件首部的版权声明。 如果您使用了别人编写的源代码,则需要取得相关的使用许可文书。但是如果你 从建议中获得的仅仅是一些想法,而不是你实际上使用的代码,你也不需要文书。 尽量不要对 QT 的源代码进行修改,如果为了某重要需求而一定要对 QT 源代码进 行修改,那么一定要在源代码中修改的位置做详细的说明,并署名。另外还要书 写详细的修改文档。 第二条:为每个目录维护一个修改日志(Change Logs),以记述对目录下源文件修改 修改日志中的一个条目包括以下几个部分:一个星号、被修改的文件的名称以及被扩在 括号内的、被修改了的函数、变量或者任何东西。括号之后是冒号和对你对函数或变量的修 改的说明。用空行把无关的条目分隔开。如果两个条目反映了同一个修改,因而它们一同工 作,那就不要在它们之间使用空行。如果后续的条目针对的是相同的文件,那么你可以忽略 文件名的星号。下面是一个示例: * expr.c (store_one_arg): Round size up for move_block_to_reg. (expand_call): Round up when emitting USE insns. stmt.c (assign_parms): Round size up for move_block_from_reg. 在概念上,你可以把修改日志看作解释原始版本与当前版本的不同的“undo 列表”。人 们可以阅读当前的版本;他们不需要修改日志告诉他们其中有什么。他们从修改日之中 得到的是关于早期版本的不同的清晰解释。 第三条:工程文件命名遵循的原则 工程文件(.pro)命名采用:工程名+.pro 的方式。pro 文件中 HEADERS 和 SOURCES 行中如果有多个文件名(一般都会有的),则使用“\”将他们隔开,并且使每一个文件名单 独占一行。原则上文件名的先后顺序没有限制,但是一般的惯例是将依赖性最小的文件写在 最前面,工程的主程序(一般是 main.cpp)往往出现在 SOURCES 的最后。一般将 TARGET 行 写在 HEADERS 和 SOURCES 的下面。下面是范例: HEADERS = hello.h SOURCES = hello.cpp \ main.cpp TARGET = hello 工程中所有文件和目录命名中的字母一律使用小写,以保持在 windows 环境下的兼容 性。 第四条:函数注释三部分,功能、参数和返回值 每个程序都应该以一段简短地、说明其功能的注释开头。请为每个函数书写注释以说明 函数做了些什么。如果有参数和返回值,也需要对其进行解释。 软件测试系列 第 - 5 - 页 共 8 页 - 5 - 第五条:变量、定义等注释 对于每个静态变量和全局变量,请添加相应的注释语句。对于重要的变量、定义等进行 注释。 第六条:变量和函数的命名原则 变量名或函数名中使用大写字符来区分各个部分,以便于记忆和阅读。 全局(包括类中的)变量用长名字,局部变量用短名字。类成员变量前应加上 m_, 全局变量加上 g_,仅与本模块有关的变量加上 l_。 如果定义 QT 类库中某种类型的变量,采用将类名中大写字母提取出并合并成小写 的缩写字符串的方法(去掉第一个 Q),如: QLineEdit *m_leInputNum; QString *m_sName; 如果程序中出现了两个类名缩写一样的问题,如:QToolBar 和 QToolButton 的缩 写都是 tb,这时应将其中一个类的缩写进行变动,变动的准则以能够避免冲突, 同时缩写能够表达类名为准。如这里可以将 QToolBar 的缩写为 tbar,QToolButton 仍用 tb,这样就可以避免命名冲突。 声明自定义对象类型的变量采用同样的方法。 局部变量应尽量易懂简洁,使用常见的变量,如 Num,nCount,i,j,k,n,len,pos, offset,nReadNum,index,nRet,ret,string,filename 临时变量,如 ltmp,ftmp,tmpStr,tempStr 自定义信号以 sig_开头,自定义槽以 slt_开头。sig_和 slt_后面第一个单词(或 其缩写)要以小写字母开头,第二个以后的单词(或缩写)要以大写字母开头。 如:sig_mouseClicked(),slt_getMouseEvent()。另外,信号和槽的参数必须完 全对应。在用 connect 进行连接的时候,信号和槽中的参数可以只写参数类型。 基本结构是数个以大写字母开头的单词。 返回自定义 private 变量值的函数命名建议以 Get 开头,如 GetLength()可以表示 取回成员变量 m_nLength 等; 设置自定义 private 变量的函数命名建议以 Set 开头,如 SetLength()可以表示设 置成员变量 m_nLength 等。这样做是为了避免与 QT 类中的函数名发生冲突。全局 函数命名请以小写 g 开头。 第七条:自定义类的命名原则 自定义类一般有两个文件,一个头文件,一个实现体 cpp。文件名采用被封装的类 名,但是一律小写。如果一些结构或宏仅与本类有关,可在类头文件中定义。 任何自定义类命名不要以 Q 开头,以免与 QT 类库中的类混淆。(对自定义的类命 名建议以大写字母 A 开头(MMCP),表达一定版权信息,并且在文件列表时自定 义类会依次排在列表的前部)。 如果需要自定义一个基类,请确保该基类的类名以 Base 结束。 工程的界面类一般从 QWidget、QMainWindow、QDialog 类继承,工程主界面类的 命名采用“工程名+MainWindow”方式,如:AChartMainWindow 即表示 Chart 工 软件测试系列 第 - 6 - 页 共 8 页 - 6 - 程的主界面类。主界面类往往在程序的开头(main 函数)处构造,建议将构造主 界面类的语句(main 函数)放在 main.cpp 中。对于一般的窗体,请在类名的最后 体现窗体的类型,一般的方法是如果从 QWidget 继承而来,则以 Widget 结尾,如 果从 QMainWindow 继承而来则以 Window 结尾,从 QDialog 继承而来,则以 Dialog 结尾。 如果在自定义类中(从 QT 某个类继承),如果覆盖了父类中某个函数,请在该函 数的声明旁边注明。 第八条:类声明体中的编排 在类的声明体中,请按照:Q_OBJECT、public:、signals:、slots:、protected:、 private:,的顺序将成员变量和函数进行排列。如果需要在这个类(class)中声 明某种数据类型(结构、枚举等),请将这个声明放在所有成员变量和成员函数的 前面。如果在一种类型的声明中,即有成员变量,又有函数声明,请使用两个相同 的类型声明将它们隔开,如: private: void function(); ⋯ private: int m_number; ⋯ 对一般的界面类,如果使用了信号/槽,则 class 声明的第一行必须是 Q_OBJECT。 建议避免使用 protected 类型的成员函数或者成员变量,因为在 QT 中,大量的事 件处理函数(槽)均是以 protected 类型出现的。 第九条:工程中目录的使用 工程中的图片(建议以 JPEG、PNG 格式(避免使用 GIF)),统一保存在“./pics/” 目录中。工程使用的汉化相关文件(.po 和.qm)放在“./i18n/”目录中。工程的临时交换 目录请以宏的形式定义(建议使用“./temp/”),不要使用固定目录。另外,请不要使用 “./tmp/”目录名(这个目录名在 QT for Windows 的版本中有特殊意义)。 第十条:界面布局原则 制作 QT 界面的时候,请尽量使用布局管理器(QLayout)进行布局管理,避免使用绝对 坐标,除非你能够绝对肯定这个界面的尺寸是完全不会变换的。如果某个区域出现了很多控 件,在保证不会影响程序控制结构的前提下,请将这些控件放在一个可以包含其它窗口控件 的盒子(如 QWidget、QFrame、QGroupBox)中,然后再让这个盒子出现在界面上(即这些 控件以整体形式出现)。书写界面上的英文长度的时候,请与对应的中文进行比较,确保汉 化后中文能够被完全显示。 代码中如果出现了需要在界面上出现的文字,必须用英文表示,并且使用 tr 函数将其 包含。如:tr(“message!”)不能在程序中将这些文字直接用中文替换。 软件测试系列 第 - 7 - 页 共 8 页 - 7 - 第十一条:为工程目录编制 ReadMe 文件 每个工程所在的目录都编写一个 README 文件,在该文件中说明本工程的基本情况:如 本工程所实现的功能,编译本工程所需要的特殊方式等。 第十二条:添加文件修改、版权信息 在每一个头文件和 cpp 文件中的开头,请以注释的方式注明本文件所属的模块、本文件 的功能。在文件的结尾添加本文件的作者、本文件的最后修改日期等情况。并请随时保持这 些注释信息处于最新状态。下面是文件头、尾的范例:(建议使用英文文件头) 文件开始: /* * Copyright (c) 2003,北京梅梅出品有限公司 * All rights reserved. * * 文件名称:filename.h * 文件标识:见配置管理计划书 * 摘要:简要描述本文件的内容 */ 文件结尾: /* * 当前版本:1.1 * 作者:输入作者(或修改者)名字 * 完成日期:2003年5月20日 * * 取代版本:1.0 * 原作者:输入原作者(或修改者)名字 * 完成日期:2004年1月10日 */ 第十三条:注意代码的兼容性 为了保证跨平台,请在程序开发中尽量使用标准 QT 开发包中的类和函数,而不要使用 来自第三方(并且在 QT 开发包中没有包含的)的开发包,以及 qtopia 这样的桌面开发环境。 如果在 windows 下开发 QT 程序,当程序发生比较重大的升级时,在 Windows 环境编译 通过后,请再将程序在 Linux 环境下进行编译,并确保编译通过。 第十四条:调试信息输出 代码中如果需要输出调试信息,请使用条件编译 MMCP_DEBUG 宏将其包围,如: #ifndef MMCP_NO_DEBUG qDebug(“debug message”); QMessageBox::warning(0,“warning”,”message”); #endif 软件测试系列 第 - 8 - 页 共 8 页 - 8 - 第十五条:跨平台中的条件编译格式 在代码中如果出现了与平台( windows、linux)相关的代码,请使用条件编译 MMCP_WIN32 宏将其分开,如: #ifdef MMCP_WIN32 //code for win32 #else //code for linux #endif 第十六条:使用 qtopia 的条件编译格式 在 main 函数中,请使用条件编译 MMCP_QPE_LINUX 宏包含需要在 qtopia 环境下编译 的代码,如: #ifdef MMCP_QPE_LINUX QPEApplication a( argc, argv ); #else QApplication a( argc, argv ); #endif 第十七条:其它编码的规范请参考《CC++编程规范》。
还剩7页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

pc5f

贡献于2013-10-13

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf