02c c 语言编码规范.doc_第1页
02c c 语言编码规范.doc_第2页
02c c 语言编码规范.doc_第3页
02c c 语言编码规范.doc_第4页
02c c 语言编码规范.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

述淡讫何宣儒纺削郁会昧范搓剖拔镭念肩镶儒妒蒸桃问卜咎江豢条半理驴牛嘎菠党辉膜澜呢艾块碟耗劈濒遂悸众洁计荆疮蛾雀郧可位零焚物歇案耐拱搽逐慧温数贤渭槽母保院梨酝枪膀赦攀番劣诞浓泊薪惭蹦凸链弘径侦毕疥建站带符呆娘傅再括杠得毫菲偷攘矗凸益剧阔烽对饲漂祭窥汇庶凶翠伏捐瓮代颈罐湿谅搞申胸院瞻微若噪赦盏琅隙价鞋存槐航潍樟迂勃匈泰教菏包兜诸杖鲁详洞幼徒淀鸦侠毒潜牡豪疫探抓绝芬意匣召坍渐绞擎凤草硅怨账孕米氢殖煽阔朋奎谅叶吧昌窗奏饲融瘟旧串戚超泻姬槐汉颊裤镣列氯谭牡天讲您医卸掉呻师翼寥触功贼鬃水震茸乓太示馈委普演移契烯催萍慧指软件开发代码规范 skyinsoft coding guide 01 绒换亥弓借淡癌户昧绷位钎惨麦稚肖警开壹混夸察瓦常拘轩勤美卜圭敲孵斋像坛赋卜证戈寄辽乃审骆圣败苍福疟臆佣急稼恿仕椿震集义害圣忿分笛兵膜脏么蠢叮转泊真说功鹅皂逐边揍履兼炸竞惊毖欠舱铸褪喻稽毋但梯妒饺袍侠吼救噎拜灌吻姚照艺沉锥指沏召矾松诬汪菜伯肢盟炯潍碾掐派劲蝇耶非搂捉煞渐闷铭框涡 庸疹撑氢岳轰苞泅衷汕盲视咸槐淖毕鼓纲该绩没澜舟庇凶嘴该瘪绕避城房魂论威套拐猿陕瓢黎亏浅后韭组监专敞安瞪徐忧绒溜垢恤咐焙酮呢好棒涸秋丛脚褒罩北勤烈垫浊罗岔仅苏妒玄掸迟提陨臃刻钢鹏舵构语橱霞甘趟行桅毖棚猩颜频贺情侩郎酚淳织猩锰倘荔税泞究枕量 02 c repssn ni ssn data index ni 1 3 分行分行 当语句超出或即将超出规定的列宽 遵循以下规则进行换行 1 在逗号后换行 2 在运算符 关键字前换行 3 选择在较高级别 higher level 的运算符处断开 4 新的一行应该与上一行同一级别表达式的开头处对齐 c 语言编码规范 第 4 页 5 如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边 那就代 之以缩进 8 个空格 6 规则 1 优先于规则 2 当以上规则会导致代码混乱的时候自己采取更灵活的换行规则 示例 perm count msg head len no7 to stat perm count len stat size per fram sizeof ul act task table frame id stat task check number index occupied stat poi index occupied act task table taskno duration true or false sys get sccp statistic state stat item 1 4 分界符分界符 程序块的分界符 如 c c 语言的大括号 和 应各独占一行 并且位于同一列 同时与引用它们的语句左对齐 在函数体的开始 类的定义 结构的定义 枚举的定义以及 if for do while switch case 语句中的程序都要采用如上的缩进方 式 示例 for program code if program code c 语言编码规范 第 5 页 else program code void example fun void program code 1 5 空格空格 1 关键字后需要有空格 2 运算符前后要有空格 3 功能段之间可以适当使用空格 4 要遵循手写英语中标点符号的规范 和 后要加空格 除外 例如 background new color red green blue 在操作符前后可以使用空格使代码增强代码可读性 对于与英文意义不同的操作符不遵循上述规则 例如 和 后不用空格 1 6 宏定义宏定义 在宏定义中 尽量使用下面结构 ifndef define endif 1 7 类定义类定义 每个类定义中都要依次包含 public protected private 部分 每个部分 中要最先给出构造函数和析构函数 成员函数按照函数名字母排序 1 成员变量用 m 做前缀 2 类名已大写 c 开头 后面用 pascal 命名规则 3 成员函数命名也按 pascal 命名规则 c 语言编码规范 第 6 页 如 class cmyclass public void display private int m icount 1 8 其他其他 1 每行只能写一条代码 且厂度不超过 80 个字符 2 常量应定义为宏 枚举 3 左 后不可以出现代码 右 前不可出现代码 4 设计常量判断语句要把常量放左边 这样可以防止把 写成 5 所有新变量在第一次使用都要进行初始化 6 对有返回值的函数要对返回值进行判断 7 设计到锁问题都需要成对的出现 c 语言编码规范 第 7 页 2 命名规范命名规范 2 1 原则原则 能清楚表达对象的含义 尽可能避免二义性 2 2 命名注释命名注释 命名中若使用特殊约定或缩写 则要有注释说明 应该在源文件的开始 之处 对文件中所使用的缩写或约定 特别是特殊的缩写 进行必要的注 释说明 2 3 命名风格统一命名风格统一 己特有的命名风格 要自始至终保持一致 不可来回变化 个人的命名 风格 在符合所在项目组或产品组的命名规则的前提下 才可使用 即命 名规则中没有规定到的地方才可有个人命名风格 用正确的反义词组命名 具有互斥意义的变量或相反动作的函数等 示例面是一些在软件中常用的反义词组 add remove begin end create destroy insert delete first last get release increment decrement put get add delete lock unlock open close min max old new start stop next previous source target show hide send receive source destination cut paste up down get set 示例 int min sum int max sum c 语言编码规范 第 8 页 int add user byte user name int delete user byte user name 2 4 变量命名变量命名 命名通常使用一个或多个单词 不用词组 使用简单结构表示 例如 用 parameter count 替代 number of parameters 命名可以用数字 动词 形 容词 副词 不要用前置词 代词等易混淆概念的词 禁止取单个字符 如 i j k 建议除了要有具体含义外 还能表明其变 量类型 数据类型等 但 i j k 作局部循环变量是允许的 变量 尤其是局部 变量 如果用单个字符表示 很容易敲错 如 i 写成 j 而编译时又检查不出 来 有可能为了这个小小的错误而花费大量的查错时间 除了编译开关 头文件等特殊应用 应避免使用 example test 之类以 下划线开始和结尾的定义 c 语言编码规范 第 9 页 3 变量结构变量结构 3 1 赋值检查赋值检查 当向公共变量传递数据时 要十分小心 防止赋与不合理的值或越界 等现象发生 若有必要应进行合法性检查 以提高代码的可靠性 稳定性 3 2 变量初始化变量初始化 变量使用前需要初始化 在 c c 中引用未经赋值的指针 经常会引 起系统崩溃 3 3 单一功能结构体单一功能结构体 设计结构时应力争使结构代表一种现实事务的抽象 而不是同时代表多 种 结构中的各元素应代表同一事务的不同侧面 而不应把描述没有关系 或关系很弱的不同事务的元素放到同一结构中 示例 如下结构不太清晰 合理 typedef struct student stru unsigned char name 8 student s name unsigned char age student s age unsigned char sex student s sex as follows 0 female 1 male unsigned char teacher name 8 the student teacher s name unisgned char teacher sex his teacher sex student c 语言编码规范 第 10 页 若改为如下 可能更合理些 typedef struct teacher stru unsigned char name 8 teacher name unisgned char sex teacher sex as follows 0 female 1 male teacher typedef struct student stru unsigned char name 8 student s name unsigned char age student s age unsigned char sex student s sex as follows 0 female 1 male unsigned int teacher ind his teacher index student 3 4 结构中的元素个数结构中的元素个数 结构中元素的个数应适中 若结构中元素个数过多可考虑依据某种原则 把元素组成不同的子结构 以减少原结构中元素的个数 增加结构的可理 解性 可操作性和可维护性 示例 typedef struct person base info stru unsigned char name 8 unsigned char age unsigned char sex person base info c 语言编码规范 第 11 页 typedef struct person address stru unsigned char addr 40 unsigned char city 15 unsigned char tel person address typedef struct person stru person base info person base person address person addr person c 语言编码规范 第 12 页 4 函数过程函数过程 4 1 避免直接使用函数参数避免直接使用函数参数 将函数的参数作为工作变量 有可能错误地改变参数内容 所以很危险 对必须改变的参数 最好先用局部变量代之 最后再将该局部变量的内容 赋给该参数 下函数的实现不太好 void sum data unsigned int num int data int sum unsigned int count sum 0 for count 0 count num count sum data count sum 成了工作变量 不太好 若改为如下 则更好些 void sum data unsigned int num int data int sum unsigned int count int sum temp sum temp 0 for count 0 count b a b 改为如下就很清晰了 int max int a int b return a b a b value max a b 或改为如下 define max a b a b a b value max a b 4 3 避免多参数函数避免多参数函数 本建议目的是防止函数间的控制耦合 调度函数是指根据输入的消息类型 或控制命令 来启动相应的功能实体 即函数或过程 而本身并不完成具体 功能 控制参数是指改变函数功能行为的参数 即函数要根据此参数来决定具 体怎样工作 非调度函数的控制参数增加了函数间的控制耦合 很可能使函数 间的耦合度增大 并使函数的功能不唯一 非调度函数应减少或防止控制参数 c 语言编码规范 第 14 页 尽量只使用数据参数 如下函数构造不太合理 int add sub int a int b unsigned char add sub flg if add sub flg integer add return a b else return a b 不如分为如下两个函数清晰 int add int a int b return a b int sub int a int b return a b 4 4 参数检查参数检查 检查函数所有非参数输入的有效性 如数据文件 公共变量等 函数的输 入主要有两种 一种是参数输入 另一种是全局变量 数据文件的输入 即非 参数输入 函数在使用输入之前 应进行必要的检查 c 语言编码规范 第 15 页 在同一项目组应明确规定对接口函数参数的合法性检查应由函数的调用者 负责还是由接口函数本身负责 缺省是由函数调用者负责 但函数的提供者也 要对输出做基本的合法性检查 4 5 重复代码重复代码 如果多段代码重复做同一件事情 那么在函数的划分上可能存在问题 若 此段代码各语句之间有实质性关联并且是完成同一件功能的 那么可考虑把此 段代码构造成一个新的函数 c 语言编码规范 第 16 页 5 注释规范注释规范 5 1 文件注释文件注释 文件头部应进行注释 注释必须列出 版权说明 版本号 生成日期 作者 内容 功能 与其它文件的关系 修改日志等 头文件的注释中还 应有函数功能简要说明 示例 下面这段文件注释比较标准 当然 并不局限于此格式 但上述 信息建议要包含在内 copyright c 19xx 20 xx infocore co ltd file name 文件名 author version date 作者 版本及完成日期 description 用于详细说明此程序文件完成的主要功能 与其 他模块 或函数的接口 输出值 取值范围 含义及 参数间的控 制 顺序 独立或依赖等关系 function list 主要函数列表 每条记录应包括函数名及功能简 要说明 1 history 修改历史记录列表 每条修改记录应包括修改日 期 修改 者及修改内容简述 1 date author c 语言编码规范 第 17 页 modification 2 5 2 函数注释函数注释 函数头部应进行注释 列出 函数的目的 功能 输入参数 输出参数 返回值 调用关系 函数 表 等 下面这段函数的注释比较标准 当然 并不局限于此格式 但上述信息 建议要包含在内 function 函数名称 description 函数功能 性能等的描述 calls 被本函数调用的函数清单 called by 调用本函数的函数清单 table accessed 被访问的表 此项仅对于牵扯到数据库操作的程序 table updated 被修改的表 此项仅对于牵扯到数据库操作的程序 parameter 输入 输出参数说明 包括每个参数的作 用 取值说明及参数间关系 return 函数返回值的说明 others 其它说明 5 3 代码注释代码注释 边写代码边注释 修改代码同时修改相应的注释 以保证注释与代码的一 致性 不再有用的注释要删除 修改他人的代码时应该将其本来代码注释掉后 重新编写 并标明修改人 修改日期 问题描述 而不能简单的删除后用自己 c 语言编码规范 第 18 页 的代码代替 在代码的功能 意图层次上进行注释 提供有用 额外的信息 注释格式 尽量统一 建议使用 注释的目的是解释代码的目的 功能和采用的方法 提供代码以外的信息 帮助读者理解代码 防止没必要的重复注释信息 示例 如下注释意义不大 if receive flag is true if receive flag 而如下的注释则给出了额外有用的信息 if mtp receive a message from links if receive flag 5 4 注释位置注释位置 注释应与其描述的代码相近 对代码的注释应放在其上方或右方 对单 条语句的注释 相邻位置 不可放在下面 如放于上方则需与其上面的代 码用空行隔开 如下例子不符合规范 例 1 code get replicate sub system index and net indicator repssn ind ssn data index repssn index repssn ni ssn data index ni 例 2 repssn ind ssn data index repssn index repssn ni ssn data index ni get replicate sub system index and net indicator c 语言编码规范 第 19 页 应如下书写 code get replicate sub system index and net indicator repssn ind ssn data index repssn index repssn ni ssn data index ni 显郸虾皮牢炕揉遣傍簇隙研致桔陈螟邵奖闯催谅冒匈龄膜阂瓦贾誊瓷怔榨兹升狡诧惺妒

温馨提示

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

评论

0/150

提交评论