嵌入式软件编程规范致远书苑

上传人:壹****1 文档编号:564550520 上传时间:2023-09-14 格式:DOC 页数:45 大小:397.50KB
返回 下载 相关 举报
嵌入式软件编程规范致远书苑_第1页
第1页 / 共45页
嵌入式软件编程规范致远书苑_第2页
第2页 / 共45页
嵌入式软件编程规范致远书苑_第3页
第3页 / 共45页
嵌入式软件编程规范致远书苑_第4页
第4页 / 共45页
嵌入式软件编程规范致远书苑_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《嵌入式软件编程规范致远书苑》由会员分享,可在线阅读,更多相关《嵌入式软件编程规范致远书苑(45页珍藏版)》请在金锄头文库上搜索。

1、TRZN 嵌入式软件编程规范 文档修改历史:版本号日期修改者及常用邮箱修改日志0.12016-10-28杨科根据查阅的相关资料整理,此版本为第一次提交。1文档概述41.1关于本文档41.2参考文献42排版53注释104标识符命名195可读性256变量、结构267宏318函数、过程339可测性4110代码版本管理4410.1代码质量定义4410.2Git分支定义4410.3Git代码引入规定4410.4Git代码Commit顺序4510.5Commit文件过程中的其他注意事项4511附录A 推荐编辑器的默认配置修改4611.1Keil uVision5默认配置修改461 文档概述1.1 关于本文

2、档 本文档规范了芜湖天人智能有限公司嵌入式软件部软件代码的书写规范和原则。本文档仅供公司内部员工使用。公司机密,严禁外传。本文档中各规则的格式如下:【规则 编号】 规则内容 标记 其中标记的含义如下:(必须) : 表示该条规则是必须遵守的。(建议) : 表示该条规则是建议遵守的。(可选)或没有标记 : 表示该条规则是可选择遵守的。本文档的示例中,如有使用“/”,并非代码注释,而是文档的注释(有可能是文档中对代码注释的解释)。1.2 参考文献1高质量C+编程2Effective C+3More Effective C+4C+ Primer 5Thinking in C+ 2 排版l 【规则 21

3、】程序块要采用缩进风格编写,缩进的空格数为4个,对齐使用空格键,不得使用TAB键。必须嵌入式软件开发的代码编辑器,推荐使用Keil uVision5,编辑器参数设置见附录A。l 【规则 22】相对独立的程序块之间、变量说明之后必须加空行。必须示例:不正确的书写方式:if (!rpr_valid_ni(ni) . / program codegRprRepssnInd = gRprSsnDataidx.repssn_index;gRprRepssnNi = gRprSsnDataidx.ni;正确的书写方式:if (!rpr_valid_ni(ni) . / program code/空行gRp

4、rRepssnInd = gRprSsnDataidx.repssn_index;gRprRepssnNi = gRprSsnDataidx.ni;l 【规则 23】较长的语句(80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。必须示例:gRprPermCountMsg.head.len = RPR_NO7_TO_STAT_PERM_COUNT_LEN + RPR_STAT_SIZE_PER_FRAM * sizeof( UINT32 );gSysAcbTaskTableframe_id * RPR_STAT

5、_TASK_CHECK_NUMBER + index.nOccupied =rprStatPoiindex.nOccupied;gSysAcbTaskTabletaskno.nDurationTrueOrFalse = SYS_getSccpStatisticState( statItem );gRprReportOrNotFlag = (SYS_MAX_ACT_TASK_NUMBER taskno) & (SYS_n7statStatItemValid (statItem) & (0 != gSYSActTaskTabletaskno.resultData);l 【规则 24】循环、判断等语

6、句中若有较长的表达式或语句,则要进行适当的分行,长表达式要在低优先级操作符处划分新行,操作符放在行尾。必须示例:if (taskno gSysMaxActTaskNumber) & (SYS_n7statStatItemValid (statItem) . / program code/空行for (i = 0, j = 0; (i rprBufferKeywordwordIndex.nWordLength) & (j rprNewKeyword.nWordLength); i+, j+) . / program code/空行for (i = 0, j = 0; (i rprFirstWor

7、dLength) & (j rprSecondWordLength); i+, j+) . / program code l 【规则 25】若函数的参数较长,则要进行适当的分行。必须示例:rpr_n7statStrCompare(UINT8 *) & statObject, (UINT8 *) & (gSysActTaskTabletaskno.statObject), sizeof (SYS_STAT_OBJECT);rpr_n7statFlashActDuration( statItem, frameId * SYS_STAT_TASK_CHECK_NUMBER + index, stat

8、Object );l 【规则 26】不允许把多个短语句写在一行中,即一行只写一条语句。必须示例:不正确的书写方式:rect.nLength = 0; rect.nWidth = 0;正确的书写方式:rect.nLength = 0; rect.nWidth = 0;l 【规则 27】if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号。必须 示例:不正确的书写方式:if (pUserCR = NULL) return;正确的书写方式:if (NULL = pUserCR) return;l

9、【规则 28】在比较表达式中,如果有常量,尽量把常量放在前面。建议这样,万一不小心把“=”误敲成“=”,就会通不过翻译,不致引起难查的问题。l 【规则 29】程序块的分界符(如C/C+语言的大括号和)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。建议示例:本规则的特例见27的说明部分。不正确的书写方式:for (.) . / program codeif (.) . / program code void example_fun( void )

10、 . / program code 正确的书写方式:for (.) . / program codeif (.) . / program codevoid example_fun( void ) . / program codeswitch(var) case OPTION1: break; case OPTION2: if (CONDITION ),后不应加空格。必须说明:采用这种松散方式编写代码的目的是使代码更加清晰。由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格,如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因

11、为在C/C+语言中括号已经是最清晰的标志了。在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。示例:【规则 210-1】 逗号、分号只在后面加空格。int a, b, c; 【规则 210-2】比较操作符, 赋值操作符=、 +=,算术操作符+、%,逻辑操作符&、&,位域操作符= MAX_TIME_VALUE) a = b + c;a *= 2;a = b 2;【规则 210-3】!、+、-、&(地址运算符)等单目操作符前后不加空格。*p = a; / 内容操作*与内容之间flag = !isEmpty; / 非操作!与内容之间p

12、 = &mem; / 地址操作& 与内容之间i+; / +,-与内容之间【规则 210-4】-、.前后不加空格。p-id = pid; / -指针前后不加空格【规则 210-5】if、for、while、switch等与后面的括号间应加空格,使if等关键字更为突出、明显。if (a = b) & (c d)3 注释l 【规则 31】一般情况下,源程序有效注释量必须在20以上(建议20-30%)。必须说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。l 【规则 32】C代码不得使用C+的注释语法“/”,必须使用/*.*/。建议注:本文档的示例中,如

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号