UNIX下C编程规范(第2版)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

UNIX下C编程规范二零零三年七月UNIX下C编程规范第2页目录1.基本要求.....................................................................................................................31.1程序结构要求...................................................................................................31.2可读性要求.......................................................................................................31.3结构化要求.......................................................................................................31.4正确性与容错性要求.......................................................................................41.5可重用性要求...................................................................................................42.C编程规范附录.........................................................................................................52.1适用范围...........................................................................................................52.2变量命名...........................................................................................................52.3常量命名和宏定义...........................................................................................72.4函数命名...........................................................................................................72.5文件命名...........................................................................................................72.6数据说明及定义规范.......................................................................................82.7函数说明及定义规范.......................................................................................82.8注释...................................................................................................................92.9C语言书写规范.............................................................................................102.9.1条件判断语句if-else.........................................................................102.9.2多分支判断语句switch-case............................................................112.9.3禁止使用的语句、函数及用法........................................................122.10嵌入式SQL语句使用及书写规范.............................................................122.10.1SELECT语句..................................................................................132.10.2INSERT语句..................................................................................142.10.3UPDATE语句.................................................................................142.10.4DELETE语句.................................................................................142.10.5SQLCURSOR的使用....................................................................142.11超长换行......................................................................................................162.12断言Assert的使用......................................................................................17UNIX下C编程规范第3页为了统一大家C编程的风格,在此对C编程规则作了如下约定。1.基本要求1.1程序结构要求1、程序结构清晰,简单易懂,单个函数的程序行数不得超过500行。2、设计要简单,直接了当,代码精简,避免垃圾程序。3、尽量使用标准库函数和公共函数。4、不要随意定义全局变量,尽量使用局部变量。5、使用括号以避免二义性。1.2可读性要求1、可读性第一,效率第二(代码是给人读的)。2、保持注释与代码完全一致。3、每个源程序文件,都有文件头说明,说明规格见规范。4、每个自定义函数,都有函数头说明,说明规格见规范。5、主要变量定义或引用时,注释能反映其含义。6、处理过程的每个阶段都有相关注释说明。7、在典型算法前都有注释,同时算法在满足要求的情况下尽可能简单。8、利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为4个字节。9、循环、分支层次不要超过五层。10、注释可以与语句在同一行,也可以在上行。11、空行和空白字符也是一种特殊注释。12、一目了然的语句不加注释。13、注释的作用范围可以为:定义、引用、条件分支以及一段代码。14、注释行数(包括程序头和函数头说明部份)尽量占总行数的1/5到1/3。15、常量定义(DEFINE)有相应说明。1.3结构化要求1、禁止出现两条等价的支路。2、不建议使用GOTO语句。3、用IF语句来强调只执行两组语句中的一组。禁止ELSEGOTO和ELSERETURN。4、用CASE实现多路分支。UNIX下C编程规范第4页5、避免从循环引出多个出口。6、函数只有一个出口。7、避免不必要的分支。8、不要轻易用条件分支去替换逻辑表达式。1.4正确性与容错性要求1、程序首先是正确,其次是优美。2、无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。3、改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。4、所有变量在调用前必须被初始化。5、对所有的用户输入,必须进行合法性检查。6、不要比较浮点数的相等。如:10.0*0.1==1.07、程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、打印机是否联机等,对于明确的错误,要有明确的容错代码提示用户。8、单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。1.5可重用性要求UNIX下C编程规范第5页2.C编程规范附录2.1适用范围本标准适用于利用C。2.2变量命名命名必须具有一定的实际意义,程序中所有变量的命名遵循以下的组成规则:类型前缀名+自定义名类型前缀名由变量类型确定,自定义名表示连续意义字符串,如果连续意义字符串仅两个,可都大写。如OK。类型前缀数据类型例子sshortshortnShortVariintintiIntegerVarllonglonglLongVarffloatfloatfFloatVarddoubledoubledDoubleVarccharcharcCharVarszstringcharsStringVar[20]vvoidvoidvVoidVareenumenumeEnumVar={“Sun”,“Mon”,“Tue”,“Wed”,“Thu”,“Fri”,“Sat”}uunsignedunsignedintuiUnsignedIntVarp指针型变量指针型变量是在其基本数据类型名前加上字母‘p’:unsignedint*puiPtrUnsignedIntVar数组型变量数组型变量是在其基本数据类型名后加上字母‘a’:intaiIntArrayVar[10]数据库宿主变量数据库宿主变量命名加前缀‘h’:h表名_域名;表名和域名在变量中一律用大写字母表示:charhBCTL_BANKNAME[30];数据库游标数据库游标命名不遵循以上的命名规则,数据库游标名UNIX下C编程规范第6页全由大写英文字母和数字组成,英文单词间使用下划线‘_’分隔,在自定义名最后加后缀名“_CUR”,例如CURSOR_NAME_CUR就可以作为一个游标名。自定义结构类型自定义结构类型名前一律加上字符‘T’,而变量名前一律加上字符‘t’,但不必再加自定义类型名。例如,有自定义结构typedefstruct{intiIntVar;doubledDoubleVar;}T_MyStruct;T_MyStructtMyStruct联合结构类型变量联合结构类型名前一律加上字符“TU”,而变量名前一律加上字符“tu”,例如,有联合结构类型typedefunion{intiIntVar;doubledDoubleVar;}TU_MyUnion;TU_MyUniontuMyUnion函数指针变量函数指针变量名前只需加字符‘p’即可,如以下定义了有一个整型参数并返回整型值的函数指针:int(*pMyFunc)(intiIntVar);对于以下的系统数据类型,可以使用给出的字符作为变量前缀名,不必考虑其他前缀名。文件指针类型FILE变量前缀名为“fp”。例如:FILE*fpInputFile,*fpOutputFile;时间结构类型structtm变量前缀名为“tm”。例如:structtmtmTimeVar;信

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功