您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 理论文章 > 编码规范-东软-内部资料
文件名称版本:x.x.x-x.x.x第1页大连东软信息学院沈阳培训中心工程的目录结构一个工程应该划分为若干个目录,目录应该是模块划分的体现。如:ProjectModuleName1ModuleName2……ModuleNamenIncludeBinLib其中include目录下应该放置公共的头文件。Bin目录下放执行文件Lib目录下*.lib文件目录名称要有意义文件文件的结构文件的种类有两种:源文件(*.c)和头文件(*.h)。源文件中一般应该包括的内容:本文件需要包含的头文件;只在本文件内部使用的(对外部隐藏的)类型;只在本文件内部使用的(对外部隐藏的)常量;只在本文件内部使用的(对外部隐藏的)宏定义;只在本文件内部使用的函数原型说明;只在本文件内部使用的(对外部隐藏的)变量的声明;函数的代码实现。头文件中应该包含的内容提供给外部参照的类型;提供给外部参照宏定义;提供给外部参照(全局)函数原型说明;文件划分的准则高内聚;低耦合;文件的命名及文件的长度文件名只能由小写字母、数字和’_’组合而成。文件名称版本:x.x.x-x.x.x第2页大连东软信息学院沈阳培训中心使用英语命名,尽量选用可以发音和有意义的名字。一个文件的长度不要超过1000行代码。源文件一般说来,源文件的整体构成包括以下内容(有时可能不存在某些部分)。具体情况请参见源文件模板。源文件的注释框包含文件部分宏定义部分类型定义部分结构体定义部分全局变量定义部分文件static变量定义部分函数原型声明调试开关定义部分函数定义部分头文件一般说来,头文件的整体构成包括以下内容(有时可能不存在某些部分)。具体情况请参见头文件模板。头文件的注释框包含文件部分宏定义部分类型定义部分结构体/类定义部分函数原型声明头文件应采用#ifndef/#define/#endif的方式来防止多次被包含,其中使用的宏名为:“__”+“文件名”+“_”+“扩展名”,文件名与扩展名均为大写。对头文件的包含应该采用相对路径,而不采用绝对路径。#include包含的文件名称应由小写字母、数字和’_’组合而成。为了减少执行程序的大小,不应包含不需要的头文件。头文件中不要定义变量。程序格式―排版、注释排版分行较长的语句、表达式等要分成多行书写,一行程序不要超过81列;不允许把多个短语句写在一行中,即一行只写一条语句。循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分;划分的原则:整齐、美观、符合其他编码规范。若函数的参数较长,则要进行适当的划分。划分的原则:整齐、美观、符合其他编码规范。在两个函数定义之间必须使用空行分开。在函数定义中,用空行将代码按逻辑片断划分。例如两个并列的判断语句之间就可以用空行来区分;变量的定义、变量的初始化以及真正的处理语句之间就可以用空行来区分。意义不一致的宏定义之间、全局变量之间、函数声明之间需要添加空行。如果函数参数不只有一个,则每个参数的定义各占一行,每行前有一个制表符的缩进。最后一个参数的定义后要紧跟右括号。定义函数体的左右大括号要各自独占一行。【可检查:04-04-01】空格单目操作符后不要加空格。单目操作符前不要加空格。赋值符号前后要有一个空格。位逻辑运算符号后的ASCII码应该有一个空格。在条件表达式与括号间应该有一个空格。在问号表达式(?)前后应该有一个空格。在二元逻辑操作符前后应该有一个空格。在比较操作符号前后应该有一个空格。在“.”、“-”前后不应该有空格。在数组名与“[”之间不应该有空格。“,”之后应该有空格。“;”之后应该有空格。“sizeof”与“(”之间不应该有空格;“(”与类型之间不应该有空格。缩进代码缩进要使用制表符,而不是直接使用空格。对嵌套语句使用一个制表符----Tab(4个字符)的缩进。尽可能保证缩进嵌套的层数不超过四层。注释边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。注释写在说明代码的上面。注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。注释与前面的执行语句之间空一行。源文件的开头要有注释,但每个业务/项目由于客户的要求不同而有不同的注释格式,这里对注释格式不作统一要求。注释不要有嵌套。应对不易理解的分枝条件表达式加注释。不易理解的循环,应说明出口条件。函数函数命名函数名只能由大小写字母与数字构成。函数名中除前缀外的各个单词首字母要大写。函数说明函数必须都有函数说明。说明中必须包含如下内容:1.名称(FunctionName):函数的名称。2.描述(Description):函数功能的简单描述。3.作成日期(Created):格式为YY/MM/DD的日期,如03/09/28。4.参数(Parameter):函数参数的说明。a.参数说明的顺序依次为参数名称、参数类型、输入参数还是输出参数。b.如果函数没有任何参数,本项填写“VOID”。5.返回值类型(ReturnCode):函数返回值的类型。a.如果函数不需要返回值,本项填写“VOID”。6.作者(Author):函数的作者。函数定义注意控制参数的数量,一般来说不要超过7个,当参数过多时,应该考虑将参数定义为一个结构体,并且将结构体指针作为参数。函数的大小不要过长,一般定为60行以内(除去注释,空行,变量定义,调试开关等)。一个函数仅完成一件功能。防止将函数的参数作为工作变量。编写可重入函数时,若使用全局变量,则应通过信号量保护。对于可能在中断处理程序中访问的全局变量,应该用关中断的方式进行保护。函数声明一定要显示声明函数的返回值类型。如果函数不需要返回值,要声明为void类型。如果函数没有参数,参数处要书写void。函数的声明要与函数定义一致(包括函数的类型及参数的类型、个数、顺序)。函数调用回避函数的递归调用。调用没有参数的函数时、不要忘了加括弧“()”。使用从pointer型函数返回値的时候,要确认它不是NULL之后再使用。使用标准Library的函数的时候、在调用之前要确认,成为参数的値是否是作为其函数的参数能够取得的范围内的値。函数调用传递的参数(类型、个数、顺序要与函数定义一致)。变量变量命名变量的构成要素:(类型)+(标识符)实例:如iNo,其中’i’是类型符,表示返回值是整型。下面对类型缩写进行说明:20.每个元素为指向unsignedint型指针的数组的类型为apui;21.每个元素为指向long型指针的数组的类型为apl;22.每个元素为指向unsignedlong型指针的数组的类型为apul;23.每个元素为指向struct型指针的数组的类型为apst;24.每个元素为指向union型指针的数组的类型为aput;25.每个元素为指向enum型指针的数组的类型为apen;26.每个元素为指向class型指针的数组的类型为apcl;27.每个元素为指向void型指针的数组的类型为apv;28.每个元素为指向widechar型指针的数组的类型为apwc;29.每个元素为指向function型指针的数组的类型为apfn;1.每个元素为short型的数组的类型为as;2.每个元素为unsignedshort型的数组的类型为aus;3.每个元素为bool型的数组的类型为ab;4.每个元素为char型的数组的类型为ac;5.每个元素为unsignedchar型的数组的类型为auc;6.每个元素为int型的数组的类型为ai;7.每个元素为unsignedint型的数组的类型为aui;8.每个元素为long型的数组的类型为al;9.每个元素为unsignedlong型的数组的类型为aul;10.每个元素为struct型的数组的类型为ast;11.每个元素为union型的数组的类型为aut;12.每个元素为enum型的数组的类型为aen;13.每个元素为class型的数组的类型为acl;14.每个元素为指向short型指针的数组的类型为aps;15.每个元素为指向unsignedshort型指针的数组的类型为apus;16.每个元素为指向bool型指针的数组的类型为apb;17.每个元素为指向char型指针的数组的类型为apc;18.每个元素为指向unsignedchar型指针的数组的类型为apuc;19.每个元素为指向int型指针的数组的类型为api;30.每个元素为指向void型的数组的类型为av;31.每个元素为指向widechar型的数组的类型为awc;32.short的类型为s;33.unsignedshort的类型为us;34.bool的类型为b;35.char的类型为c;36.unsignedchar的类型为uc;37.widechar的类型为wc;38.long的类型为l;39.unsignedlong的类型为ul;40.struct的类型为st;41.union的类型为ut;42.enum的类型为en;43.class的类型为cl;44.short型指针的类型为ps;45.unsignedshort型指针的类型为pus;46.bool型指针的类型为pb;47.char型指针的类型为pc;48.unsignedchar型指针的类型为puc;49.int型指针的类型为pi;50.unsignedint型指针的类型为pui;51.long型指针的类型为pl;52.unsignedlong型指针的类型为pul;53.struct型指针的类型为pst;54.union型指针的类型为put;55.enum型指针的类型为pen;56.class型指针的类型为pcl;57.function型指针的类型为pfn;58.元素为short型数组指针的类型为pas;59.元素为unsignedshort型数组指针的类型为paus;60.元素为bool型数组指针的类型为pab;61.元素为char型数组指针的类型为pac;62.元素为unsignedchar型数组指针的类型为pauc;63.元素为int型数组指针的类型为pai;64.元素为unsignedint型数组指针的类型为paui;65.元素为long型数组指针的类型为pal;66.元素为unsignedlong型数组指针的类型为paul;67.元素为struct型数组指针的类型为past;68.元素为union型数组指针的类型为paut;69.元素为enum型数组指针的类型为paen;70.元素为class型数组指针的类型为pacl;71.void型的类型为v变量的类型转换不提倡变量间的类型转换。如需要类型转换,请采用显形方式进行。建议不要直接比较BOOL类型变量。不要将有符号数强制转化为无符号数。不要将浮点型指针强制转化为整型指针。变量定义与初始化关于变量的定义:在C语言中,变量应该在函数开头定义;原则上在定义变量的同时对其初始化,而不是使用前再初始化一行只作一个变量定义。但是象坐标x、y、z,纬度、经度等对同时进行定义有非常重要意义的在一行可进行多个变量定义。要防止局部变量与全局变量同名。严禁读取未经初始化的变量。不要定义过大的局部变量,以免堆栈溢出,可以定义成static全局变量或从内存池中分配。变量使用的注意事项不要返回局部变量的地址。用unsigned定义不可能为负数的变量。变量的使用目的只能有一个,禁止以多个目的使用变量。函数中避免存在不使用的变量。
本文标题:编码规范-东软-内部资料
链接地址:https://www.777doc.com/doc-2068760 .html