CodeStyle

2018-12-02 13:48

编码规范

1. 类成员函数

? ?

成员函数应该以完整的英文描述命名,函数名的第一个单词通常是一个动词。如openAccount、save等

对于存取类属性的成员函数有以下的命名规则:

? Getter:访问类的属性并返回。命名以get开头,如果返回值是boolean,以is

开头;如getFirstName、isAtEnd等。boolean返回值的另一种命名方法是使用has、can,如hasDependents、canPrint等

?

? Setter:设置类属性。命名以set开头,如setFirstName 成员函数的可见性,一个成员函数有三种可能的可见性:public、protected、private。如果一个成员函数不必是public的,那么设置成protected;如果它不必是protected,那么设置成private。

public:可以被类以外的其他函数访问

protected:可以被该类及其继承类的成员函数访问 ?

private:只可以被该类的其他成员函数访问,不包括继承类 成员函数的注释

在C++中,类成员函数的定义和声明是分开的。那么有三个要注释的地方。 一个是成员函数的声明(在.h文件夹中),该处注释给出该函数简短的功能描述,使用的上下文关系(前条件、后条件等)以及可能抛出的异常。

成员函数定义处的注释给出函数详细的功能描述、输入输出、代码更改记录。 成员函数体注释给出函数控制结构、功能流程等 注释编写格式参见“注释编写”部分。

2. 成员变量

?

使用m_开头,尽量使用完整的英文描述,如m_firstName、m_grandTotal等,而不是使用x1、y1之类的名字;另一种是使用Hungarian命名法,如m_sFirstName、m_iZipCode等

我们对变量要求使用Hungarian命名法。标准如下: i short类型 例:short iCount; n int类型 例:int nCount; l long类型 f d c s

例:long lDataCount; 例:float fDataCount; 例:double dDataCount; 例:char cInKey; 例:char sName[20]; 例:char *pMemAddr;

float类型 double类型 char类型 字符串类型

p 指针类型

? ? ? ? ?

st 结构类型 例:ParamStruct stMystruct;

a 数组类型 例:int anMyArray[20]; g 全局变量 例:char gcSysComm; o 对象类型 例:CTreeClass oTreeClass; 注意变量大小写搭配

变量名不要太长(<15)

避免使用仅在大小写上有差别的变量名,如m_firstName和m_firstname

对于组件变量,命名以组件名为后缀,并能描述出该组件的使用目的。如okButton、cancelButton、fileMenu,而不是button1, button2等。参见资源定义。 成员变量的注释

成员变量的注释应该包括:使用描述、所有可满足的不变式(这个较难)

3. 局部变量

? ? ? ?

尽量使用完整的英文描述,如firstName、grandTotal等,而不是使用x1、y1之类的名字;另一种是使用Hungarian命名法,如sFirstName、iZipCode等 注意变量大小写搭配 变量名不要太长(<15)

避免使用仅在大小写上有差别的变量名,如firstName和firstname

4. 参数

参数命名同局部变量

5. 类、接口等

? ? ?

在C++中,类命名以C开头,如CKernel等。 类的定义应该尽量减小public和protected接口。 类的注释(放在类头)

类功能描述、类的更改记录、不变量(较难)

6. 注释的编写

? ? ?

注释应该简明,中英文不限

注释尽量不要跟代码放在同一行,变量定义部分例外。

文件头的注释:在新建立一个文件时,在文件头加入如下注释:

/* * $Log$

*/

以利用CVS来跟踪代码更新历史。

由于现在不是采用CVS做版本管理,故文件头格式规定如下:

/*********************************************************

* 文件名 * * * *

文件功能 编程者 日期 项目名

:

: :

: SUI/

:

* 操作系统 * 履历 : Windows98 :

* 编号----日期--------注释------------------------------- * 00 97.06.19 初期作成 * 01

97.06.20 修改×××

*********************************************************/ 履历部分现在可以不添,等版本基本稳定以后再处理。 ?

想利用Doxygen提取出来的注释,使用以下注释方式:

Qt Style:

/*!

注释 */

单行模式: //! 注释 /**

* 注释 */

单行模式: /// 注释

JavaDoc Style:

我们的系统对注释要求使用JavaDoc模式。

? Doxygen根据注释生成的文档包括两个部分:Brief和Detail.

在Qt Style中,

//! A function variable. /*!

Details of handler. */

int (*handler)(int a,int b);

单行模式的注释生成的是Brief部分的文档

而两个注释合并部分则生成Detail部分的文档。生成的文档如下: Brief部分:

int (* handler )(int a,int b) A function variable. More... Details部分:

int(* Test::handler)(int a,int b) A function variable. Details of handler.

在JavaDoc Style中:

Doxygen把注释的第一句作为Brief注释。如 /**

* a public variable. * Details of handler. */

int publicVar; 生成的文档如下:

Brief部分:

int (* handler )(int a,int b) a function variable. More... Detail部分:

int(* Test::handler)(int a,int b)

a function variable. Details of handler. 如果要在Brief注释中包含符号”.”,必须在”.”后加上”\\”。 所以在写注释的时候要特别注意Brief和Detail的分别。

要求把Brief部分放在函数声明部分,而把Detail放在函数定义部分。 ? 如何对一组代码使用同一个注释

使用组来处理,如:

//@{

/** 注释 */

void func1(); void func2(); //@}

那么func1和func2使用同一个注释。 ? ? ?

类定义的注释:描述这个类的作用,能被Doxygen识别

成员函数的声明:描述函数的作用,使用上下文限制,能被Doxygen识别 成员函数的定义:描述函数作用,输入输出,能被Doxygen识别。

/**

* 函数功能

* @param 输入(如:i: index of list) * @return 输出(如:result: a session (result指函数的返回值),id: connection

?

id) */

以@或\\开头的是Doxygen可以识别的宏,常用的有以下一些宏。 param {parameter-description} 描述参数 return {description of the return value}

描述返回值

see {references} 引用参考

exception {exception description} 描述一个异常 在函数体中加入适当的注释。

7. 资源定义

对于资源的ID定义,应该遵循以下的原则:

? 对话框资源以IDD_DIALxyy方式命名。xyy为对话框的编号,具体如下:

Client: x = 1 节目列表对话框:IDD_DIAL101 配置对话框: IDD_DIAL102 Server: x = 2 节目编辑对话框:IDD_DIAL201 配置对话框: IDD_DIAL202

......

? 对话框中的控制部件的命名方式为:IDC_XXxxxyy。

对话框画面中其他各个项目的ID命名由“前缀IDC_XX+画面编号xxx+顺序号yy”组成。具体规定如下:

XX:控件类型编号,xxx:控件所属对话框的编号,yy:同一画面中同类控件的编号(00~99)。

Static Text

Edit Box Group Box Button Check Box Radio Button Combo Box List Box 水平滚动条 垂直滚动条 List Control Tree Control

Tab Control IP Address

: IDC_STxxxyy : IDC_EBxxxyy : IDC_GBxxxyy : IDC_BUxxxyy : IDC_KBxxxyy : IDC_RBxxxyy : IDC_CBxxxyy : IDC_LBxxxyy : IDC_HSxxxyy : IDC_VSxxxyy : IDC_LCxxxyy : IDC_TCxxxyy : IDC_TBxxxyy : IDC_IPxxxyy

? 与画面对应的类的命名

与画面对应的类及文件名与画面编号的关系为:

画面ID : IDD_DIALxyy

CLASS名 : CDialxyy 头文件名 : Dialxyy.h 源文件名 : Dialxyy.cpp

例如: 对编号为101的画面, 其CLASS名、文件名对应为: 画面ID : IDD_DIAL101 CLASS名

: CDial101

头文件名 : Dial101.h 源文件名 : Dial101.cpp


CodeStyle.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:加强中小河流治理项目质量管理工作的意见

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: