文档介绍:TRZN 嵌入式软件编程规范
1 文档概述 4
关于本文档 4
参考文献 4
2 排版 5
3 注释 10
4 标识符命名 19
5 可读性 25
6 变量、结构 26
7 宏 31
8 函数、过程 33
9 可测性 41
10 代码版本管理 44
代码质量定义 44
Git分支定义 44
Git代码引入规定 44
mit顺序 45
45
11 附录A –推荐编辑器的默认配置修改 46
Keil uVision5默认配置修改 46
文档概述
关于本文档
本文档规范了芜湖天人智能有限公司嵌入式软件部软件代码的书写规范和原则。
本文档仅供公司内部员工使用。
公司机密,严禁外传。
本文档中各规则的格式如下:
【规则编号】[规则内容] [[标记]]
其中[标记]的含义如下:
(必须) : 表示该条规则是必须遵守的。
(建议) : 表示该条规则是建议遵守的。
(可选)或没有标记: 表示该条规则是可选择遵守的。
本文档的示例中,如有使用“//”,并非代码注释,而是文档的注释(有可能是文档中对代码注释的解释)。
参考文献
[1]高质量C++编程
[2]Effective C++
[3]More Effective C++
[4]C++ Primer
[5]Thinking in C++
排版
【规则 21】程序块要采用缩进风格编写,缩进的空格数为4个,对齐使用空格键,不得使用TAB键。[必须]
嵌入式软件开发的代码编辑器,推荐使用Keil uVision5,编辑器参数设置见附录A。
【规则 22】相对独立的程序块之间、变量说明之后必须加空行。[必须]
示例:
不正确的书写方式:
if (!rpr_valid_ni(ni))
{
... // program code
}
gRprRepssnInd
= gRprSsnData[idx].repssn_index;
gRprRepssnNi = gRprSsnData[idx].ni;
正确的书写方式:
if (!rpr_valid_ni(ni))
{
... // program code
}
//空行
gRprRepssnInd
= gRprSsnData[idx].repssn_index;
gRprRepssnNi = gRprSsnData[idx].ni;
【规则 23】较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。[必须]
示例:
= RPR_NO7_TO_STAT_PERM_COUNT_LEN +
RPR_STAT_SIZE_PER_FRAM * sizeof( UINT32 );
gSysAcbTaskTable[frame_id * RPR_STAT_TASK_CHECK_NUMBER + index].upied =
rprStatPoi[index].upied;
gSysAcbTaskTable[taskno].nDurationTrueOrFalse =
pStatisticState( statItem );
gRprReportOrNotFlag = ((SYS_MAX_ACT_TASK_NUMBER > taskno) &&
(SYS_n7statStatItemValid (statItem)) &&
(0 != gSYSActTaskTable[taskno].resultData));
【规则 24】循环、判断等语句中若有较长的表达式或语句,则要进行适当的分行,长表达式要在低优先级操作符处划分新行,操作符放在行尾。[必须]
示例:
if ((taskno < gSysMaxActTaskNumber) &&
(SYS_n7statStatItemValid (statItem)))
{
... // program code
}
//空行
for (i = 0, j = 0;
(i < rprBufferKeyword[wordIndex].nWordLength) &&
(j < ); i++, j++)
{
... // program code
}
//空行
for (i = 0, j = 0;
(i < rprFirs