软件编码规范.doc

上传人:豆**** 文档编号:17690403 上传时间:2022-05-25 格式:DOC 页数:15 大小:223.50KB
返回 下载 相关 举报
软件编码规范.doc_第1页
第1页 / 共15页
软件编码规范.doc_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《软件编码规范.doc》由会员分享,可在线阅读,更多相关《软件编码规范.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流软件编码规范.精品文档.天正软件编码规范一、 命名规范1、 通则1.1、 在所有命名中,都应使用标准的英文单词或缩写,避免使用汉语拼音。1.2、 所有命名都应遵循达意原则,即名称应含义清晰、明确。1.3、 所有命名都不易过长,在可表达清晰的前提下越简洁越好。1.4、 所有命名都应尽量使用全称。1.5、 在类型名称特别复杂的时候,应使用typedef来定义别名。2、 标识符2.1、 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。(较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几

2、个字母形成缩写;一些单词有大家公认的缩写)如下单词的常用缩写application appargument argaverage avgblock blkbuffer bufcommand cmdcontrol ctrldatabase dbdelete deldescription descdialog dlgdictionary dictdimension dimdistance distdocument docentity entescape escflag flgincrease incinformation infolength lenlibrary libmanager mgrme

3、mory memmessage msgobject objpassword pwdpicture picployline plinepointer ptrposition posrecord recreference refresource rscscreen scrserver srvsource srcsystem systemp tmptext txtversion verwindow wndVC+中常用控件缩写Animate aniCheck Box chkComboBox cmbEdit edtGroup Box grpListBox lstPicture picProgress p

4、rgPush Button btnRadio Button radScroll Bar sbSlider sldStatic stcTab Control tab2.2、 长的标识符应使用缩写来缩短长度,而特短的标识符应该避免使用缩写。更恰当:int iFlagHMODULE hLoadedSysRsc不恰当:int iFlgHMODULE hLoadedSystemResource2.3、 变量和封装体命名中单词或缩写的第一个字母应大写,其它字母小写,单词和单词之间直接连接,不得有其它字符。在宏定义中全部用大写,单词与单词之间必须用下划线连接。正确:TempResource#define R

5、EG_KEY错误:Temp_Resource temp_resourcetempresource#define Reg_Key2.4、 除了编译开关/头文件等特殊应用,应避免使用_EXAMPLE_TEST_之类以下划线开始和结尾的定义。2.5、 对于变量命名,禁止取单个字符(如i、j、k.),命名除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k等作局部循环变量是允许的。2.6、 命名时,如果需要进一步分类时,分类属性应放在前面。正确:CListBox m_wndLstFonts;CComboBox m_wndCmbColors;错误:CListBox m_wndFontsLst

6、;CComboBox m_wndColorsCmb;2.7、 命名中若使用特殊约定或缩写,则要有注释说明。(应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明)2.8、 在命名规范中没有规定到的地方,才可以使用自己特有的命名风格,要自始至终保持一致,不可来回变化。2.9、 除非必要,不要用数字或较奇怪的字符来定义标识符。正确:#define EXAMPLE_TESTTestLockDriver错误:#define EXAMPLE_0Test1232.10、 在同一软件产品内,应规划好接口部分标识符的命名,防止编译、链接时产生冲突,可在普通标识基础上加上模块

7、标识。示例:在TGRX模块中可定义为 CTGRxObject g_rxRegistry在TGDB模块中可定义为 CTGDbBlockRecord g_dbGlobal在TGGui模块中可定义为 CTGUiFrameWnd g_uiCmdMgr2.11、 命名规范必须与所使用的系统风格保持一致,并在同一项目中统一,比如有关STL的代码应使用STL中的全小写加下划线的风格,有关MFC的代码则使用大小写混排的方式。3、 封装体3.1、 采用前缀和以大写开头的英文单词或缩写组成,即:前缀 + 标识符。简写 类型 说明C class 类S struct 结构体E enum 枚举U union 联合体示例

8、:class CTree ;struct SResBuf ;enum ESeekType ;union UResVal;4、 变量4.1、 变量命名应遵循匈牙利记法,即:前缀 + 类型 + 标识符。4.2、 前缀简写 类型 说明m_ class member 类的成员变量s_ static variable 静态全局变量g_ global variable 普通全局变量注意:1、 struct/union中的成员变量不加前缀,即:类型 + 标识符2、 const成员变量应使用k + 标识符3、 enum中的成员应使用k + 标识符示例:m_arsName m_lFilePoss_cConfig

9、 s_iLoopTimesg_hResouce g_sModuleNamestruct STreeDataHICON hTreeIcon;TCHAR szTreeName;;class CVector3dconst CVector3d kIdentity;const CVector3d kXAxis;enum EDirectionkLeft,kRight,;enum EErrorStatuskOk,kOutOfMemory,;4.3、 类型基本类型简写 类型 说明by byte 字节b bool 布尔型n short 短整型n UINT 无符号整型i int 整型l long 长整型w WOR

10、D 双字节dw DWORD 四字节f float 浮点数d double 双精度数ch char 字符型sz char 以0结尾的字符串cr COLORREF color refpsz LPCTSTR const char*字符串指针psz LPTSTR char*字符串指针wnd window 窗口类fn function 函数p pointer 指针ar array 数组lst list 链表map map 影射e enum 枚举u union 联合c struct 一般的结构体c class 一般的类注意:1、 有的类型可以组合以表示复杂的数据类型,即:主数据类型 + 修饰类型2、 字符

11、串指针char*、const char*应使用LPTSTR、LPCTSTR替代3、 在类型前加const,命名约定不变示例:byte byVal; BYTE byVal;bool bVal; BOOL bVal;short nVal; SHORT nVal;UINT nVal; CUIntArray arnVal;int iVal; INT iVal;long lVal; LONG iVal; ULONG lVal;WORD wVal; WORD g_wVal;DWORD dwVal; DWORD m_dwVal;float fVal; float& fVal;double dVal; dou

12、ble* pdVal;char chVal; TCHAR chVal;char szName5; TCHAR szName5COLORREF crBackground;LPCTSTR pszName;LPTSTR pszName = new TCHAR5;CButton wndOk; CToolBar wndTBarWNDPROC pfnProc;void* pUnknown; LPCTSTR pszKey;CStringArray arsVal;CPtrList lstpVal;CMapPtrToPtr mapVal;enum EFileType eFileType;union UResva

13、l cVal;struct STreeData cData;class CStudent cXiaoMing;void* ppVal;CStringArray arsNames;LPCTSTR pszName;LPCTSTR pszVal; LPTSTR pszVal;Windows / VC+ / MFC类型s CString 字符串dc CDC 设备环境对象bmp CBitmap 位图pen CPen 画笔br CBrush 画刷fnt CFont 字体rgn CRgn 区域imglst CImageList 图片列表mnu CMenu 菜单pt CPoint 点vt vector 向量m

14、at matrix 矩阵sz CSize 尺寸rc CRect 矩形tm CTime 时间pos POSITION 位置h handle 句柄类p smart point 智能指针CString sFileName;CClientDC dcMem;CBitmap bmpLogo;CPen penRed;CBrush brBlue;CFont fntArial;CRgn rgnClip;CImageList imglstIcons;CMenu mnuPopup;CPoint ptPosition; POINT ptMousevector vtVal;matrix matTransform;CSi

15、ze szNormal;CRect rcClient; RECT rcDefault;CTime tmCurrent;POSITION posStart;HDC hDC; HTREEITEM hParent;_com_ptr_t pInterface;AutoCAD / ObjectARX类型pt ads_point ads点ent ads_name ads实体ss ads_name ads选择集mat ads_matrix ads矩阵d ads_real ads实数rb struct resbuf ads链表pt AcGePoint2d/3d 点vt AcGeVector2d/3d 向量sc

16、 AcGeScale2d/3d 比例mat AcGeMatrix2d/3d 矩阵ext AcDbExtents 边界id AcDbObjectId idar AcArray 数组tol AcGeTol 误差ads_point ptStart;ads_name entLine;ads_name ssPickSet;ads_matrix matTransform;ads_real dDistance;struct resbuf rbXData;AcGePoint3d ptPosition;AcGeVector2d vtDirection;AcGeScale3d scZoom;AcGeMatrix2

17、d matRotateAcDbExtents extView;AcDbObjectId idEnt;AcDbVoidPtrArray arpSubEntity;AcGeTol tolTemp;5、 函数5.1、 推荐使用动宾结构。函数名应清晰反映函数的功能、用途,见名知意。常见的函数命名开始:Init_, Open_, Create_, Get_, Set_, Read_, Load_, Write_, Start_, Stop_, Check_, Test_, Fill_, Process_, Sort_, Do_, Select_, Is_, Exist_,5.2、 函数名每个单词或缩写的

18、第一个字母必须大写。正确:void DoJig()BOOL IsEmpty();错误:void DO_JIG();void Do_Jig();6、 宏6.1、 使用单词或单词缩写,所有字母大写,单词之间使用_分隔。6.2、 在定义类似函数或变量的宏时例外,可参照函数或变量的命名规范。示例:#define IsZero(dVal) (fabs(dVal) B-C-A),影响程序的可理解性;递归调用一般都占用较多的系统资源(如栈空间);递归调用对程序的测试有一定影响。故除非为某些算法或功能的实现方便,应减少没必要的递归调用。6、 宏6.1、 宏定义表达式时,要注意完备的括号。正确:#define

19、AREA(dL, dH) (dL) * (dH)错误:#define AREA(dL, dH) dL * dH6.2、 将宏所定义的多条表达式放在大括号中。6.3、 使用宏时,不允许参数发生变化。正确:#define SQUARE(iX) (iX) * (iX)int iVal = 5;int iRes = SQUARE(iVal);iVal +;错误:#define SQUARE(iX) (iX) * (iX)int iVal = 5;int iRes = SQUARE(iVal+);6.4、 宏定义中一般不使用缩进,但是当宏定义比较复杂时可使用缩进。6.5、 对较复杂的断言宏加上明确的注释

20、,不能用断言宏来检查最终产品肯定会出现且必须处理的错误情况。7、 排版7.1、 相对独立的程序块之间、函数间要有空行分开。7.2、 变量的定义尽可能放在最开始处,多态函数和功能相近的函数集中放在一起。7.3、 循环、分支代码,判断条件与执行代码不得在同一行上,且循环体外要加花括号“ ”。7.4、 程序块的分界符“”应独占一行,且位于同一列,同时与引用它们的语句左对齐。7.5、 不允许把多个短语句写在一行中,即一行只写一条语句。7.6、 声明变量时对齐变量名,并在定义时加以注释说明。7.7、 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作

21、时,如果是关系密切的立即操作符(如)后不应加空格。规则:1 逗号、分号只在后面加空格2 一些双目操作符如“=”、“+=”等前后应加空格3 一些单目操作符前后不加空格4 “-”、” . ”前后不加空格5 if、for、while、switch等与后面的括号间应加空格6 函数名与后面的括号不应加空格7 不要连续留两个以上空格示例:int iA, iB, iC; iA = iB + iC; iA = iB 2;iA *= 2; iA += iB;*piA = iA; iA+;pA-idK = iK; ptA.x = dX;if (iA + iB = 0)switch (eType)MessageBo

22、x(“Ok!”);7.8、 对齐和缩进以 TAB 为单位,不使用空格。1 个 TAB 为 4 个空格。下列情况,代码缩进一个 TAB:8 函数体相对函数名及“”“”9 if、else、for、while、do 等执行体10 class / struct / union / enum 成员下列情况,不必缩进:1 switch 之后的 case、default2 Public、protected、private关键字7.9、 划分新行1 长的语句(80字符)要分多行书写。2 长表达式要在低优先级操作符处划分新行。3 操作符放在新行之首。4 新行应有适当的缩进。示例:BOOL bFlag = (iT

23、askNo MAX_TASK_NUMBER) & (StateItemIsValid(stateitem) & (tableiTaskNo.iResult != 0);8、 代码8.1、 在代码中尽量不用具体的大小数值,定义成宏,便于以后维护。8.2、 在数据存取和接口代码中,为保证系统间的兼容性,不应使用int类型(因为不同系统之间的存储字节长度往往不同),应使用long或short型。8.3、 在逻辑表达式中应将常量放在比较符之前,以减少误写造成的错误。更恰当:=误写成=时,编译报错LPCTSTR pszName = “Abc”if (NULL = pszName)不恰当:=误写成=时,不易察觉LPCTSTR pszName = “Abc”if (pszName = NULL)8.4、 少使用malloc、free、realloc,多用new、delete,new,delete是规范的C+语

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁