c语言huffman编码:C/C++语言编码规范标准



1.介绍说明
为了保证在软件Software开发过程中全体成员代码风格便于维护提高软件Software产品质量和保持开发产品延续性特制定本编码规范标准本规范标准详细规定了源代码书写、变量命名、/过程书写、和异常处理等方面
2. 约定
2.1 排版规则
应采用缩进风格编写每层缩进使用个制表位(TAB)类定义、思路方法都应顶格书写;
左花括号要另起不能跟在上行末;
个变量定义占个语句占行;
对独立块的间、变量介绍说明的后必须加空行;
对于较长语句(>80)要分成多行书写长表达式要在低优先级操作符处划分新行操作符放在新行的首划分出新行要进行适当缩进使排版整齐语句可读;
循环、判断等语句中若有较长表达式或语句则要进行适应划分;
在结构成员赋值等情况等号对齐最少留个空格;
或过程中参数较长则要进行适当划分
形参排序风格:
Ø 最常使用参数放在第位;
Ø 输入参数列表应放在输出参数列表左边;
Ø 将通用参数放在特殊参数左边
2.2 命名约定
2.2.1 应用命名
“公司缩写”+模块名称+[版本]
2.2.2 子模块命名
每个子模块名字应该由描述模块功能1-3以单词组成每个单词首字母应大写在这些单词中可以使用些较通用缩写
2.2.3 变量命名
变量命名基本原则是使得变量含义能够从名字中直接理解可以用多个英文单词拼写而成每个英文单词首字母要大写其中英文单词有缩写可用缩写;变量前缀表示该变量类型;对于作用域跨越10行以上变量名称不能少于4个除循环变量累加变量外不得使用I、j、k等名称变量变量分为取全局变量和局部变量对于全局变量以加前缀“g_”来区分



另外要注意是:全局变量在中不要定义太多能用局部变量就用局部变量如果要使用相关变量建议采用类方式或者结构方式存放以减少具体变量个数
2.2.4 常量命名
常量所有字母均为大写并且单词的间使用下划线”_”隔开
2.2.5 /过程命名
/过程名称应该尽量使用能够表达功能英文名称名称中应该禁止使用如同function1,function2等含义不清名称单词间应该使用大小写分隔全局/过程名称以“g_”前缀开始
2.2.6 接口命名
接口名称要以大写字母开头如果接口包含多个单词每个单词首字母大写其他字母小写如果这些单词是缩略语(例如XML)也要首字母大写其他字母小写(写为Xml)
2.2.7 类命名
类名称要以大写字母开头;
类名称如果包含多个单词每个单词首字母要大写其他字母小写;如果这些单词是缩略语(例如XML)也要首字母大写,其他字母小写(写作Xml);
类名称应该是个名词或名词短语;
类成员变量命名规则和上述规则相同但是要以“m_”开始表示其为成员变量(Member);
类名称不能出现下划线
2.2.8 思路方法命名
思路方法名称以小写字母开头;
思路方法名称如果包含多个单词除了第个单词外每个单词首字母大写其它字母小写如果这些单词是缩略语(例如XML)也要首字母大写其它字母小写(写作Xml)
思路方法名称应该是个动词或动名词短语意思是“完成什么功能”“执行什么操作”;
2.2.9 数据库命名
表:采用“模块名简称+前缀+’_’+表名”命名规则
Ø 表名Ø 以能理解该表内容为原则Ø 可由中文表示Ø 也可由代表此表含义英文字母组成Ø 首字母大写;
Ø 前缀代表此表类别
视图:采用“模块名+’_’+视图名+’视图’”命名规则通常由8个以内汉字组成
存储过程:采用“Proc+模块名+’_’+存储过程名”命名规则
触发器:采用“模块名+’_’+触发类型+’_’+表名”命名规则如果有多个触发类型则可以叠加在
字段:字段命名以能理解该字段含义为原则通常由多个英文单词加前缀拼写而成而组成字段名称首字母应大写单词有缩写可用缩写字段前缀表示该字段数据类型其取值详见“数据类型”描述原则上字段命名长度不超过18字节;描述字段中文名称用数据库创建工具设计数据库时需要输入
2.3 参数约定
2.3.1 输入参数约定
有些有输入参数这些参数指由外部(者)输入并在内部使用业务流程介绍说明后跟输入参数介绍说明区用“输入参数”或“Input Parameters”标记在参数名列表中每个参数后增加该参数注释
2.3.2 输出参数约定
有些有输出参数这些参数指由外部(者)定义内部使用并返回给参数在输入参数介绍说明区后跟输出参数介绍说明区用“输出参数”或“Output Parameters”标记在参数名列表中每个参数后增加该参数注释另外输出参数般以指针或应用输出
2.3.3 返回值约定
每个均有返回值除非操作非常简单对于有区别状态返回值建议用long型返回值0为成功对于出错类返回值在同层次模块用统代码表示在输出参数介绍说明区后跟返回值介绍说明区用“返回值”或“Return values”标记返回值介绍说明要介绍说明各种区别类型返回值以及它们含义
2.4 注释约定
在软件Software中对每个文件头,自定义和变量,重要处理过程都要有必要注释
2.4.1 源注释和规范标准
每个文件头插入注释标明文件用途和作者注释如下:(注释尽量用中文)
//名称
//版权介绍说明
//版本号:
//功能:
//开发人:
//开发时间:
//修改者:
//修改时间
//修改简要介绍说明
//其他
2.4.2 注释
每个前面注明功能和输入输出注释为:
//名称
//功能:(介绍说明功能)
//输入参数:(介绍说明每个输入参数用途和取值约定)
//输出参数:(介绍说明每个输出参数用途和取值约定)
//返回:(介绍说明返回值返回值含义和约定)
2.4.3 变量注释
直接在变量后面注明变量用途和取值约定如:
status; //记录处理状态0: 成功1:
2.4.4 类型定义注释
指类和记录等等定义注释在注释中标明定义用途
2.4.5 区注释
个类成员思路方法要求排列在共同协作而实现同个功能和过程要求排列在代码通常使用几个和过程来实现某项功能这时候需要使用区注释将这些具有共同目和过程标明出来
使用整行”*”作为隔离行清晰可读
般删除代码不建议直接删除,最好用“//”注释起来
2.4.6 代码中注释
在代码中要求注释地方有:
代码中关键部分;
在使用特殊算法或者逻辑性较强代码;
在修改或删除代码部分,需要加注释;修改/删除人,目.
2.5 变量作用范围
尽量做到缩小变量作用范围对于变量是指针应遵循以下约定:
在局部分配空间在局部释放
体内不能分配空间并将空间指针作为参数返回
动态全局空间在结束时定要释放
所有动态分配空间在对应层次模块释放并且用完马上释放不重复释放相同指针
2.6 /过程定义
定义处应当增加本功能描述注释
句话描述清楚功能
可用英文或中文
功能注释格式要求所有代码
2.7 业务流程定义
功能描述后要增加主要业务流程注释
可以用多行描述以解释清楚业务流程为主
可用英文或中文
业务流程注释格式要求所有代码
业务流程注释可以尽量详细注释长度可以和代码长度差不多但是不要太长
比如处理N阶乘业务流程定义如下:
/* Process: N factorial use callback function to implement. If N 0 then */
/* 1 N-1 factorial. */



/* 过程:N阶乘利用回调实现如果N等于零则返回1 */
/* 否则返回 N-1阶乘 */
注意:业务流程介绍说明并不在乎有多长但是在乎能否介绍说明过程有些像N阶乘流程比较简单但是有些比较复杂当比较复杂时可以用标号来介绍说明
3. 接口/过程约定
几乎每个项目中都存在开发接口API给其他应用本规范标准适用于标准C开发接口API
3.1 头文件(.h文件)
提供给使用API应用标准C头文件头文件必须包含 3部分
防止头文件重复引用编译条件
即我们在创建头文件时必须增加以下条件编译:#ndef # #end比如要防止abcqueue.h头文件被重复引用必须在abcqueue.h增加以上条件编译:
#ndef _ABCQUEUE_H
# _SMBUS_H
……
#end
定义
定义是为了方便应用知道LIB、DLL里引出了怎样API应该如何使用如上面例子
代码定义
代码是接口API里内部某种返回代码它告诉应用出现了什么以便开发者进行调试和排错
3.2
提供给应用执行体实现必须根据以下规范标准开发
3.2.1 变量定义
代码中变量定义必须放在第部分同时给指针类型变量赋空(NULL)
3.2.2 参数合法性检查
在使用应用传递输入输出参数的前必须对参数进行合法性检查保证代码执行使用参数安全性比如应用个输出参数地址为NULL如果处理的前不检查参数合法性那么将导致个内存;如果检查合法性就不会造成代码执行时出现问题
3.2.3执行处理
在处理代码开发中必须注意以下系列问题:
对应用传递输入输出参数禁止使用strcpy, strlen, strcat, strcmp等相应操作输入输出参数尽量使用strncpy, memcpy等含有处理长度参数进行处理
必须先分配系统资源才能分配内部需要资源;相反必须首先释放内部分配资源再释放系统资源
3.2.4 返回值
对外接口API必须返回返回值给应用
4. 和异常处理规范标准
4.1 出错类型定义约定
在整个系统软件Software产品出错定义要致;
模块层次出错类型统定义;
出错类型分为、警告、提示等 3类信息分别用E、W、I开头;
代码统用宏描述并且放在个头文件中;
出错代码宏定义还要加注对这个代码介绍说明;
出错代码有相应文档指明代码定义规则
例子:有ErrorDef.h中有如下定义:
// **************************************************************
// Error Code Macro Define
// **************************************************************
// Error Code
# E_OK 0x0 // 没有
# E_NO_ENOUGH_MEMORY 0x1001 // 内存不足
# E_INVALID_HANDLE 0x1002 // 无效句柄

// Warning Code
# W_CUT_RECV_DATA 0x2001 // 裁剪接收数据
# W_ FIND_OLD_MESSAGE 0x2002 // 发现老消息

// Information Code
# I_SEND_SUCCEED 0x9001 // 发送成功
注意:出错类型定义定要统并且定要注意编码问题
4.2异常捕获
中会出现各种异常如除0、内存都要处理要有异常可能都要捕获
4.3异常和处理
每个独立处理内部异常对影响结果异常通过返回值返回对于在内部不能处理异常捕获后已另外形式向者抛出但是要在接口文档中详细写明
注意:处理异常般有两种思路方法是通过将异常转化为另个异常抛出 2是通过返回值返回在本规范标准中我们倾向于用第 2种思路方法



Tags:  算术编码c语言 c语言编码 c语言huffman编码

延伸阅读

最新评论

发表评论