




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 C 语言程序设计代码规范 1 命名规范 本规范对变量 函数 类 结构 等的名称有严格的规定 在编码过程中务必遵守 1 1 变量命名规范 变量名称采用匈牙利命名法 即 完整的名称由 缀 和 主体 复合而成 缀 用于指示变 量的种类 数值类型 作用域等属性 由小写字符和下划线 组成 根据其附着在 主体 的位 置分为前缀和后缀两种 主体 表示变量的语义 整个变量名称的格式如下 下面详细论述 1 1 1 作用域缀 前缀和后缀 作用域前缀处在整个变量名的最前面 常用的作用域前缀为 g 表明这是一个全局变量 m 表明这是一个类成员变量 s 表明这是一个静态 static 变量 前缀 表明这是一个局部变量 参看后面详细解释 后缀 表明这是一个参数变量 参看后面详细解释 作用域后缀处在整个变量名的最后面 只有一种情况使用作用域后缀 就是函数的形参必须以 作用域后缀结束 1 1 2 指针缀 如果一个变量是指针 则必须使用指针缀 指针缀使用字母 p 表示 以前 在 DOS 平台下有短指针和长指针的区别 有时称长指针为 lp 在 Win32 平台下已经不存 在这个区别了 所以统一使用 p 而不是 lp 1 1 3 类型缀 类型缀由小写字符构成 用于描述变量的类型 注意 1 不要私自创造出各种各样的前缀 2 也没有必要在前缀中仔细区分一些细小的类型区别 那样会给代码维护工作带来额外的麻烦 常用的类型前缀为 n 用于一般情况下的各种整数 浮点数 枚举类型 包括 unsigned int unsigned long 和一些派生类型 UINT ULONG WORD DWORD 等 精品文档 2欢迎下载 b bool 类型 p 表示指针 在 Win32平台下使用 p 而不是 lp h Windows API 内部的各种 HANDLE sz char 或者 char w 类型的数组或者字符串常量 wnd Windows 窗口 所有 MFC 窗口对象都以 wnd 缀开头 包括 CView CDialog CFrameWnd CButton 等 ptPOINT CPoint clr COLORREF 其它用来表示颜色的数值类型 dc CDC 类 penCPen brushCBrush vectorstd vector liststd list CList mapstd map CMap arrayCArray itstd iterator c w dw 用于要求明确区分数据类型长度的情况下 如跨平台的网络通讯 或磁盘读取 注意 尽量使用 n 作为前缀 而不是这些字符前缀 对于其他不在上面表中的结构 类等复杂数据类型 特别是不常使用的和不通用的 不使用前 缀 例如 class Person Jonson struct DateTime MyDt 在应用场合明确的情况下 例如 简单的局部变量 它的值类型前缀有时可以省略 具体见下 面的例子 1 1 4 复合前缀 根据以上规则 变量根据它所在的作用域 类型 是否是指针 得到一个复合前缀 例如 char g szFileName MAX PATH 全局字符串变量 char g pszFileName 全局字符串指针变量 char s szFileName MAX PATH 静态字符串变量 char s pszFileName 静态字符串指针变量 char s szFileName MAX PATH 局部静态字符串变量 char s pszFileName 局部静态字符串指针变量 char m szFileName MAX PATH 类字符串变量 char m pszFileName 类字符串指针变量 char ms szFileName MAX PATH 类静态字符串变量 char ms pszFileName 类静态字符串指针变量 更多的例子 参见下面按照作用域讨论变量名一节 精品文档 3欢迎下载 1 1 5 主体 用于描述变量的上下文意义 一般地 由首字母大写的一个或者多个单词构成 要求用英语作为描述语言 如 FileName DateTime 这样就形成了由大小字母夹杂的单词串 这种写法常见于 Windows 风格的编 码 注 全部单词小写 单词之间使用下划线分割 例如 file name date time 这种写法常见 于 UNIX 风格的编码 但是这种命名方式就不能很好地区分缀和主体 所以在本规范中是不推荐的 单个的变量声明使用单数形式 不加任何冠词 例如 CFile file 数组使用名词复数形式 CFile files 3 一些容器类的作用类似于数组 所以也使用复数命名 例如 CArray arrayFiles std list listObjects 1 2 按作用域分类讨论变量命名 1 2 1 参数变量 函数的参数变量要求由后下划线结尾 见作用域缀一节 在一些纯数学函数中 也可省去数值 类型前缀 n 其它类型前缀不能省略 例如 bool Create PCTSTR pszPathName double Add double a double b 值类型前缀省略 1 2 2 局部变量 由前下划线开头 在纯数学函数中 或者简短的上下文中 也可省去数值类型前缀 n 其它类 型前缀不能省略 bool bRet char szBuffer MAX PATH 下面是一些值类型前缀省略的例子 int i 常表示循环变量 int temp for int i 0 i countof szBuffer i float a a 的作用域很短 所以可以省略 1 2 3 全局变量 使用作用域前缀 g 全局变量因为作用域很大 所以命名一定要规范 名称的主体部分必须能 清晰说明变量的意义 并且不得有不规范的缩写 例如 精品文档 4欢迎下载 CWinApp g Application int g nVersion HINSTANCE g hInstance 1 2 4 静态变量 使用作用域前缀 s 局部静态变量使用前缀 s 注意看下面的例子 例如 CNcWinApp s App int s nVersion HINSTANCE s hInst void f static int s nCallTimes 1 2 5 其他例子 下面是变量命名的一些例子 extern HINSTANCE g hInst 全局变量 static int s nTimer 0 全局静态变量 int func int nCounter int pnSize 参数变量 局部变量 long nTotalItem static long s nCount 0 int nVar LPSTR pszBuffer TCHAR szCache MAX PATH int var1 省去类型前缀 1 3 常数 目前本规范对常数类的命名规范还不是非常清晰 很多常数作用域也很大 类似于全局变量 所以命名一定要规范 名称的主体部分必须能清晰说明变量的意义 并且不得有不规范的缩写 常数分成以下几类讨论 1 3 1 宏定义的常数 define 定义的常数要求用大写字母和下划线混合命名 但是并不强制要求在每个单词之间插 入下划线 如 define LEFT0 okay 精品文档 5欢迎下载 define RIGHT1 okay define UP DOWN1 okay define Right1 not recommended 1 3 2 const 定义的常数 未完成 const 常数员命名既可以遵循一般变量命名法则 也可以遵循常数命名法则 1 3 3 枚举 未完成 枚举命名 枚举名服从一般变量命名法则 枚举成员命名 枚举成员名既可以遵循一般变量命名法则 也可以遵循常数命名法则 1 4 函数命名规范 函数命名采用大小写夹杂的动宾结构命名 如 int GetLastError okay int getlasterror 全小写 不推荐 int get last error 全小写 不推荐 int OpenFile okay int FileOpen 非动宾结构 不推荐 属于同一类的一组函数可以使用共同前缀来标识 如 int NetGetError int NetOpen int NetClose int NetSend int NetReceive 内部实现函数可以使用前下划线作为前缀 例如 class MyClass private void init 仅在某一个代码文件使用的内部实现函数应定义为静态函数 这可以避免作用域冲突 1 5 结构命名规范 结构命名 结构名服从一般变量命名法则 结构成员命名 结构变量名服从一般变量命名法则 如 精品文档 6欢迎下载 struct DateTime int nYear int nMonth int nDay int nHour int nMinite int nSecond 本规范不采用对结构成员使用表示结构的前缀 如 struct DateTime int dtYear error int dtMonth error int dtDay error int dtHour error int dtMinite error int dtSecond error 一般说来 结构中不包含成员函数 偶尔 仅仅包含构造函数是允许的 如果希望把结构改造 成包含丰富成员函数的对象 那样的话 请使用类 class 其命名规范见下面叙述 1 6 类 class 1 6 1 类布局 在类中 推荐先是 public 节的内容 然后是 protected 节 最后是 private 节 也推荐参考 MFC 的类布局 使用 Construction Attributes Operations Overrides Implementation 等注释来布局 1 6 2 类成员 类成员变量 遵循一般变量命名法则 同时要求使用 m 前缀 类成员函数 遵循一般函数命名法则 嵌套类 枚举 嵌套结构 遵循一般类 结构命名法则 综合以上 举一例如 class MyClass public BaseClass public first 精品文档 7欢迎下载 MyClass MyClass protected then int m nVar1 int m nVar2 private last int DoSomething 2 布局规范 需要注意的是 非公共接口的结构 类 常数 函数原形不要放在公共头文件中 而是应该放 在私有头文件或实现文件中 2 1 文件标头 文件标头必须包括版权说明 简短介绍 下面是文件标头的一个例子 Copyright c Naiky Company All rights reserved Abstract include include include ifdef DEBUG define new DEBUG NEW undef THIS FILE static char THIS FILE FILE endif 自 VC6 0 以来 new delete 操作增加了调试版本 对检测内存泄露非常有帮助 所以上面的代 码包含这部分内容 2 2 函数说明 函数说明是可选的 可以使用中文或者英文编写 一般说来 公开接口 公共函数应该有说明 这样便于代码维护 函数说明有两个地方可以放 一是放在函数声明中 而是放在函数实现中 这两个地方的函数 说明有所不同 函数声明处的说明 此处的说明目的是告诉使用者 该函数的用法以及应该注意的问题 应包括函数的作用 入口 精品文档 8欢迎下载 参数和返回值说明 以及需要注意的声明内容 下面是一个声明处说明的例子 Description You can fill some description here Entries Parameter1 about Parameter1 Parameter2 about Parameter2 Parameter3 about Parameter3 Return about return value Note this is an optional section 函数实现处的说明 此处的说明目的是告诉代码维护人员 该函数实现的细节以及在实现过程中需要注意的问题 以下是摘自实际代码的一个例子 DESCRIPTION Get the distance from a 3d point to a 3d line ALGORITHM A line in 3D is given by the parametric vector with parameter t x0 x1 x0 t L y0 y1 y0 t 1 z0 z1 z0 t A given point is P u1 v1 w1 The distance between the point and the line is therefore r 2 u1 x0 x1 x0 t 2 v1 y0 y1 y0 t 2 w1 z0 z1 z0 t 2 2 To minimize the distance take d r 2 dt 0 3 assume that a x1 x0 u u1 x0 b y1 y0 v v1 y0 c z1 z0 w w1 z0 therefore 2a u a t 2b v b t 2c w c t 0 4 精品文档 9欢迎下载 therefore a u b v c w t 5 a a b b c c reference to 2 get r 2 u a t 2 v b t 2 w c t 2 6 PARAMETERS POINT3DD point the given point POINT3DD line0 POINT3DD line1 the given line RETURNS the power 2 of the distance inline double distance2 point line POINT3DD point POINT3DD line0 POINT3DD line1 2 3 代码布局 代码使用制表符缩进 制表符宽度为 4 代码行宽一般不超过 80 列 不过 现在的显示器越来越大 阅读更加方便 所以可以考虑把代 码行宽设定到 100 列 超过的部分折行到下一行 折行要求缩进一个制表符 2 3 1 空格使用规范 保留字后面空一格 如 for int i 0 i 3 i okey for int i 0 i 3 i not recommended while true ok while true not recommended if a b ok switch sw ok 双目操作符左右各空一格 括号 左右不空格 如 a b c ok a b c not recommended a b c ok a b c not recommended
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 4.2 农业-我国东西部农业发展差异 说课稿 2023-2024学年八年级地理上册人教版
- DTNL-课件教学课件
- DSP加法指令课件
- 2025年护理消化道出血题库及答案
- Unit 8 Once upon a time Section B 2a-2b 说课稿 人教版(2024)七年级英语下册
- (正式版)DB65∕T 4184-2019 《商品条码产品信息数据规范》
- 2025年新疆兵团考试题型及答案
- 2025年医院会计考试题库及答案
- 涂料生物降解技术的研究进展-洞察及研究
- 4 《削苹果》(教学设计)人教版劳动三年级上册
- 无损检测VT-PT作业指导书SOP
- 煤矿架空乘人装置安装检验报告
- 王慧文清华大学《互联网产品管理课》
- 汉画像石课件
- GB/T 6725-2017冷弯型钢通用技术要求
- GB/T 26006-2010船用铝合金挤压管、棒、型材
- GB/T 19867.6-2016激光-电弧复合焊接工艺规程
- 建筑工程防火墙脚手架搭设施工方案
- 无生上课课堂教学评价标准
- 植物生理学第十三章植物的逆境生理课件
- 炎症性肠病患者与营养支持
评论
0/150
提交评论