软件设计规范-C语言

5星(超过95%的资源)
所需积分/C币:11 2014-05-13 17:20:11 518KB PDF
23
收藏 收藏
举报

软件设计规范-C语言
文件编号: SZYBAYF-GF-13 软件设计规范 版本状态:A1 ROBOT 文档密级:机密 软件设计规范之 c语言编程 第1页共26页 生效日期:2013-11-01 文件编号: SZYBAYF-GF-13 软件设计规范 版本状态:A1 ROBOT 文档密级:机密 目录 1.排版 2.注释… 4 3.标识符命名…16 4.变量 5.常量、宏、枚举、数据结构、数组...….… 10 函数 12 7.语句 15 8.程序结构 9.版本号管理. 23 10.调试…… 24 11.工具 26 第2页共26页 生效日期:2013-11-01 文件编号: SZYBAYF-GF-13 软件设计规范 版本状态:A1 ROBOT 文档密级:机密 1.排版 1.1.规则:代码缩进 程序块要采用缩进风格编写,缩进使用Tab键,在开发工具中设置一个制表符的缩进量是 个空格。在源代码中不允许出现制表字符,以适应各位编辑器 1.2.规则:开发工具字体使用等宽字体,推荐使用 Courier new或者 Consoles字体。 使用等宽字体,可使代码排版整齐,清晰易读ε Courier new字体有等宽、间距较宽的特 点,可使代码显示清晰。 Consoles对字符o和数字0、字符Ⅰ和数字1可以很好的识别,同样为 等宽字体。 1.3.规则:每代码行宽度不超过80字符,声明代码除外 每代码行宽度不超过80字符,以方使阅读和打卬输出。对于超过此长度的定义、声明或 语句通过増加续行符()或者直接换行(代码行),并设置合理对齐,以达到较清晰的目的 例如 木本木本本水木本本本本木丙水本本衣本木水本水本木本木木本*本本本木水水水本水本木事本木本 本木本本木本冬本木本本水本本本木水木水木二 * Function:依串口配置,返回一个字节传输所需要的时间 Parameters *cfg[in] USART InitType Def,串口初始化参数 others 每传输一字节需要1到11个位,假设波特率为960,即有 *1/9669(sec/bit)=1808/9606(msec/bit *如果按每byte传输10b1ts,需要的时问(毫秒)为 *10bits*1208!9608 *由于计算过程中为向下取整因此需要加上960-1,保证除数结果为向上取整 (不小于此值),公式为:(每字节位数*106)+(BAUD-1)/BAUD 冰米米米*求水**求米水末米x米水客*米水米*水水半米*水米*米水*米冰*米x米水米水案 水*冰某水米冰客冰米*本末水某*米水末冰 *define msEc FOR_ ON BYTE(cfg)\ ( (((cfg USART_ WordLength = USART_ WordLength_8b)?8: 9)+2)*1000\ (cfg USART BaudRate-1)\ cfg USART BaudRate 第3页共26页 生效日期:2013-11-01 文件编号: SZYBAYF-GF-13 软件设计规范 版本状态:A1 ROBOT 文档密级:机密 2注释 2.1.规则:注释的原则是有助于对程序的阅读理解,注释语言必须准确、易懂、简洁 在开发源代码过程中,养成使用注釋描述代码框架,再完成代码,确保代码结构清晰 对于有要进行说明的代码行或者表达式,在代码行后,或者上面(不要在下面)写注释。 2.2.规则修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。 2.3.规则:说明性文件(如头文件.h文件等)头部应进行注释,注释必须列出:版权说明、版 本号、生成日期、作者、内容、功能、与其它文件的关系、修改记录等。对于接口函数也同 样要求增加版本变更说明。 示例: 半米米米*求木**米常水末米x米米米米*冰米米米水米末**本末米本水冰米x米末*冰客冰不米米米冰客冰x米米米本米水米本*米米*冰米冰末 Y Copyright (c)2013 Suzhou Robot Information Technology Co, Ltd filename gltbdataload Author Version: 1. 0. 1 Date:2813.9 Description:全量表/规则表数据加载 others Y History <Author> <Date> <Version> <Description> 水水冰水半水****半**水求半米x**米冰家*某**求客*某**米率家***半米某*冰*冰米x 2013.9,101..1移除#pack(1)指令,使用单独赋值方法实现 对部分代码添加注释,并重构,使结构清晰 本木本本*木本木木木本本本木本本本木木六水本木水木木水丰水本本本木木木本本本木本本本木本木水本本木本 2.4,.规则:避免在注释中使用缩写,特别是非常用缩写。 在使用缩写时或之前,应对缩写进行必要的说明。例如IFS( og file system),为日 志文件系统,函数或者结构体(类型)可以直接使用缩写进行函数或者类型说明,但在头文 件的声明中应该予以全拼的说明。 2.5.规则:注释应与其描述的代码相近对代码的注释应放在其上方或右方(对单条语句的注释 相邻位置,不可放在下面,注释与代码行间不能有空格(总描述性注释除外)。 例 /1: /2: /3: /4 // fetch a record 第4页共26页 生效日期:2013-11-01 文件编号: SZYBAYF-GF-13 软件设计规范 版本状态:A1 ROBOT 文档密级:机密 lfs read(.) // append to data frame memcpy( data+offset, pdata, dlen)j 2.6.规则:注释与所描述内容进行同样的缩排。 可使程序排版整齐,并方便注释的阅读与理解 2.7.规则:含义的变量、常量、宏等,如果其命名不是充分自注释的,在声明时都必须加以注释, 说明其物理含义。注释应放在其上方相邻位置或右方。 示例 / server port number + int portNumber j int portNumber, / server port number * 28.规则:数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须 加以注释。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的 注释放在此域的右方。 示例:可按如下形式说明枚举/数据/联合结构。 扇区字节数x1088 * fine sector SIze 0x10000 /扇区个数(支持最大扇区数65535) tdefine sector Cnt 128 typedef struct 11 unsigned int start //开始扇区号,范围范围为[ start,end) unsigned int end /′结束的扇区号 unsigned char type //该文件系统的类型标识 nsigned short logsize;//记录的日志最大大小 nt //用于内部表示开始的头(写的位置)初始化时需 start tail //用于内部表示开始的尾(读的位置) unsigned int count //可用日志记录条数 unsigned int //当前读的头位置(扇区的ID位置) unsigned int wt id //当前写的头位置(扇区的ID位置) unsigned int maxsectrecs;//每扇Ⅸ最大可存储记求数量 fIfs t 2.9.规则:对于代码变更时,要求在变更代码前简单描述变更原因、日期和作者 对于小的变更要求在代码位置进行简要变更原因说明,而对于大的变更要求在函数或者 文什前的变更列表中包含变更原因、日期和作者。 第5页共26页 生效日期:2013-11-01 文件编号: SZYBAYF-GF-13 软件设计规范 版本状态:A1 ROBOT 文档密级:机密 3.标识符命名 3.1.规则:标识符命名应当直观且可以拼读,可望文知意。 标识符命名最好采用英文单词或其组合,便」记忆和阅读。切忌使用汉语拼音来命名 用词应当准确(除非在行业内或者某一较人范围内达成共识的中文拼音缩写)。 标识符要求按聚类进行标识,从左至右相当于氾围描述,从大到小,如此变量、函数等 标识可直接看出范围、功用,冋时方便查找,动词放最后。例如吃苹果的描述就为: 苹果吃,而不是吃_苹果,这样与苹果相关的功能将会在一块,如削苹果。 小例 从下示例中就可以看出函数属于FS库的函数,宏为IFS的读操作返回码。 # define les read rtn nodata-1/*没有数据可读*/ define les read rtn nobue-2/*没有足够的缓冲* # define LFS READ RTN DATAERR-3/*数据错误*/ int lfs append(l id data, int den); int lfs reinit(lfs t* this int lfs load (lfs t* this); 3.2.规则:变量和参数命名的全部小写。单词之间可以用“”连接,或者采用简写方式标识 示例 t lfs inne tail(lfs_t*this, int k) int next nt newhead int statu 3.3.规则:函数命名全部小写,单词间用“_”连接 示例 nt lfs inner head (lfs scan tail(l int Ifs inner get count(lfs t* this)i 3.4.规则:常量、宏、枚举值命名的所有单词用大写,单词之间用“”连接。 示例 第6页共26页 生效日期:2013-11-01 文件编号: SZYBAYF-GF-13 软件设计规范 版本状态:A1 ROBOT 文档密级:机密 typedef enum sector status SS HEAD TAIL 0xC4 SS HEAD =6x84, SS TAIL =日xC7, SS DATA SS EMPTY =0xF7, SS UNINIT OXFF SS BAD ×88, SS INVALID = 0xCC, sector status t define lfs flash Bad define les FLASH Wrerr-1 #define LFs FLASH OK 3.5.规则:变量、常量、枚举应使用“名词”或“形容词+名词”命名;函数应使用“动词”或 “动词+名词”命名。 3.6.规则:全局变量以“g”开头,静态变量以“s”,模块內全局变量叮不加。尽量不使用工 程范围的全局变量,文件内的全局变量可设为静态变量,单个函数访问的静态变量置于函数 体。全局变量建议使用函数接口代替进行访问,以提高降低耦合度。 /在头文件中声明全局变量,需要使用该变量时可包含此前文件(不推荐全局变量) tern int g tick cnt /在头文件中声明函数接口(推荐) int get tick count(void); //(.C) //全局变量的定义,此变量具有外部链接接口 // global tick count for all int g tick cnt 使用 static症义为模块内静态变量,尽模块內可访问 static int mode cnt=日; //通过接口函数返回模块内变量 /此方法对于需要使用多个变量参数时,通过返回结构体,可使代码更清晰 int get tick_ count (void) return g tick cnt; void foo (void) //函数体内静态变量,仅用于此函数 第7页共26页 生效日期:2013-11-01 文件编号: SZYBAYF-GF-13 软件设计规范 版本状态:A1 ROBOT 文档密级:机密 //一般情况下,只该函数使用时,决不能定义为模块变量或者程序变量 static bool first call false; first call true; 3.7.规则:模块内变量定义要求加 static前缀,明确定义为模块内变量,以免引起链接相关问 题 3.8.规则:对于变量命名,禁止取单个字符,但用作局部循环变量、返回值是允许的 (i, j, k, m, n, r, rv, ret) 第8页共26页 生效日期:2013-11-01

...展开详情
试读 28P 软件设计规范-C语言
立即下载 身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
haonanerh 软件设计,很有用哦
2014-05-23
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
软件设计规范-C语言 11积分/C币 立即下载
1/28
软件设计规范-C语言第1页
软件设计规范-C语言第2页
软件设计规范-C语言第3页
软件设计规范-C语言第4页
软件设计规范-C语言第5页
软件设计规范-C语言第6页

试读结束, 可继续读3页

11积分/C币 立即下载