C编码规范小组规范V1.0.doc_第1页
C编码规范小组规范V1.0.doc_第2页
C编码规范小组规范V1.0.doc_第3页
C编码规范小组规范V1.0.doc_第4页
C编码规范小组规范V1.0.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+_编码规范小组规范Prepared by拟制人余裕拱Date日期2013-03-04Reviewed by评审人Date日期Approved by批准人Date日期文档编号: 密级: 文档修订记录日期版本说明作者2013-03-041.0创建余裕拱目录一、 读者对象1二、 目录结构1三、 文件结构23.1头文件#define保护23.2头文件依赖23.3包含次序23.4声名次序3四、 代码注释4五、 命名原则55.1局部变量55.2常量55.3参数变量55.4类或结构成员变量65.5类名65.6枚举65.7结构65.8函数75.9回调函数85.10线程85.11全局对象85.12对称的命名105.13组件命名105.14UI组件命名11六、 代码风格11七、 常用组件12一、 读者对象有一定的C+基础,为加快日常开发和管理统一代码风格编写,这里只会提及20%的C+内容元素,本人觉得最高的效率法则就是2/8法则,就是希望只用20%最简单的C+元素,就可以实现日常开发中80%的功能。尽量不要做无用功,提倡用最简单的代码实现最复杂的功能,不要用最复杂的代码实现最简单的功能。简单代码 + 清晰逻辑 = 复杂的构造二、 目录结构项目名/doc / 项目文档项目名/bin / 项目执行程序项目名/script / 项目脚本项目名/include / 第三方或公共组件项目名/lib / 项目动态生成库项目名/release / 版本发布项目名/test / 测试代码项目名/tmp / 项目动态生成的临时资源项目名/src / 源代码项目名/src/app / 执行程序项目名/src/gui / 界面逻辑_引用开发工具UI组件项目名/src/bll / 业务逻辑_引用标准C+项目名/src/dal / 数据逻辑_引用标准C+项目名/src/entity / 结构实体_引用标准C+三、 文件结构.h / 头文件.cpp / C+实现文件.hpp / .h与.cpp的结合,做标准公共组件用#include / 格式来引用标准库和系统库的头文件。 #include file.h / 格式来引用当前工程中的头文件。3.1 头文件#define保护所有头文件都应该使用#define防止头文件被多重包含(multiple inclusion),如:#ifndef SYSTEM_BLL_H#define SYSTEM_BLL_H .#endif3.2 头文件依赖使用前置声明(forward declarations)尽量减少.h文件中#include的数量,加快编译速度。3.3 包含次序将包含次序标准化可增强可读性、避免隐藏依赖(注:隐藏依赖主要是指包含的文件编译)头文件包含次序如下:C库、C+库、其他库的.h、项目内的.h。实现文件(如dir/foo.cpp)包含次序如下:dir2/foo2.h(优先位置,详情如下)C系统文件C+系统文件其他库头文件本项目内头文件在包含文件里不要使用.(当前目录)和.(父目录),如:#include “./abc.h” / 不要这样使用3.4 声名次序在类中使用特定的声明次序:public:在private:之前,成员函数在数据成员(变量)前。定义次序如下:public:、protected:、private:,如果那一块没有,直接忽略即可。每一块中,声明次序一般如下:1) typedefs和enums;2) 常量;3) 构造函数; 4) 析构函数;5) 成员函数,含静态成员函数;6) 数据成员,含静态数据成员。四、 代码注释1)类对像头文件注释,如:/*功能概述: 备注: 修改记录: 日期 版本 修改人 修改内容YYYY-MM-DD 1.0 部门-姓名 创建YYYY-MM-DD X.Y 部门-姓名 */ Class CFile2)函数名注释,如:/ 设置姓名Void SetName( const string& psName );3)变量注释,如:string msName;/ 姓名;4)实现文件中针对每做一件事都要加上注释。五、 命名原则5.1 局部变量类型首字母小写+英文单词(首字母大写),如:表4.1 局部变量类型定义备注boolbool bIsSuccess;/ 是否成功intint iCount;/ 总数unsigned intunsigned int uiNum;/ 编号charchar cNum;/ 编号long longlong long llSerialNum;/ 序列号stringstring sName;/ 姓名floatfloat fPrice/ 单价doubledouble dMoney;/ 金额bool 常用isSet, isVisible, isFinished, isFound, isOpen5.2 常量const+类型首字母小写+全大写英文单词(单词间+”_”),如:const int iMAX_BUFF = 1204;5.3 参数变量p+类型首字母小写+英文单词(首字母大写),如:void SetName( const string& psName );5.4 类或结构成员变量m+类型首字母小写+英文单词(首字母大写),如:class CFilestring msFileName; / 文件名;5.5 类名C+英文单词(首字母大写),如:class CComName; / 定义对象名CComName comName; / 创建对象引用5.6 枚举e+全大写英文单词(单词间+”_”),如:/ 窗口显示模式enum eShowModel eUI_MAX_IMIZED = 0, / 最大化显示 eUI_NORMAL, / 普通显示;5.7 结构tag+英文单词(首字母大写)+Entity,如:/ 定义文件属性结构typedef struct tagFilePropertyEntity int miFileNum; / 文件编号string msFileName; / 文件名FilePropertyEntity;FilePropertyEntity filePropertyEntity; / 创建实体引用5.8 函数英文单词(首字母大写),如:GetFileName()/ SetFileName()/ Erase()/ Reserve()/ IsExist()bool类型的变量和函数返回值是bool的函数以is为前缀来命名,如:isSet, isVisible, isFinished, isFound, isOpen在某些情况下,有些比is前缀更适合(has, can, should),如: bool HasLicense(); bool CanEvaluate(); bool ShouldSort();当有属性的情况下,使用get/set来存取,如:employee.GetName();employee.SetName( name );想要计算什么可以使用compute,如:valueSet.ComputeAverage();matrix.ComputeInverse()想要想找什么可以使用find, 如:vertex.FindNearestVertex();matrix.FindMinElement();编写短小函数函数体尽量短小、紧凑,功能单一函数参数顺序定义函数时,参数顺序为:输入参数在前,输出参数在后。5.9 回调函数英文单词(首字母大写)+CallBack结尾,如:typedef void( *BufferCallBack ) ( const unsigned char* buffer, const int bufferLength );BufferCallBack mBufferCallBack = NULL;5.10 线程英文单词(首字母大写)+Thread结尾,如:static void* PrintMapThread( void* );pthread_t tid;pthread_create( &tid, NULL, PrintMapThread, (void*)this );5.11 全局对象使用单键模式/-头文件-class CSysBll / 对象引用指针public: static CSysBll * GetInstance();/ 对象内部指针private: static CSysBll * mInstance;public:/ .void Test();private: / .CSysBll ();/-CPP文件头部加入-CSysBll * CSysBll :mInstance = NULL;CSysBll * CSysBll :GetInstance() if( mInstance = NULL ) mInstance = new CSysBll; return mInstance;CSysBll:GetInstance()-Test();/ 调用5.12 对称的命名get/setadd/removecreate/destroystart/stopinsert/deleteincrement/decrementold/newbegin/endfirst/lastup/downmin/maxnext/previousold/newopen/closeshow/hidesuspend/resume5.13 组件命名组件的命名要把组件类型放到变量的后面,如:mainWindow, propertiesDialog, widthScale, leftScrollbar, mainForm, fileMenu, yesToggle, fileNameVector, fileNameList 等。5.14 UI组件命名UI常用组件的命名,其它不常用的组件引用上面的组件命名方式。表4.13 UI常用组件命名控件简称备注labellbl/ 标签lineEditedt/ 编辑框pushButtonbtn/ 安钮comboBoxcmb/ 下拉框Checkboxchk/ 复选框RadioButtonrdo/ 单选框六、 代码风格前置自增和自减+iCount;-iCount;0和NULL 整数用0,实数用0.0,挃针用NULL,字符(串)用/0;变量和表达式间用空格分开if(空

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论