ISOS编程规范说明书文档格式.docx

上传人:b****5 文档编号:15765470 上传时间:2022-11-16 格式:DOCX 页数:21 大小:26.31KB
下载 相关 举报
ISOS编程规范说明书文档格式.docx_第1页
第1页 / 共21页
ISOS编程规范说明书文档格式.docx_第2页
第2页 / 共21页
ISOS编程规范说明书文档格式.docx_第3页
第3页 / 共21页
ISOS编程规范说明书文档格式.docx_第4页
第4页 / 共21页
ISOS编程规范说明书文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

ISOS编程规范说明书文档格式.docx

《ISOS编程规范说明书文档格式.docx》由会员分享,可在线阅读,更多相关《ISOS编程规范说明书文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

ISOS编程规范说明书文档格式.docx

5.3空行和空格的使用5

6表达式与基本语句6

6.1运算表达式6

6.2if语句6

6.2.1布尔变量与零值比较6

6.2.2整型变量与零值比较7

6.2.3浮点变量与零值比较7

6.2.4对if语句的补充说明7

6.3Switch语句7

7常量8

7.1为什么要用常量8

7.2定义常量的方法8

7.2.1#define宏定义8

7.2.2const常量9

7.2.3枚举9

7.3函数返回值常量定义9

7.4特性开关宏定义9

8注释9

8.1注释的基本概念10

8.2注释的准确性10

8.3变量、常量的注释10

8.4函数的注释11

8.5修改注释12

8.6/**/、/**以及/**<

12

9文件布局12

9.1C以及h文件头要求12

9.2C源代码文件布局要求13

9.3H头文件要求15

9.4H头文件布局15

9.5ip_pub.h16

9.6ip_def.h16

9.7ip_ext.h17

9.8ip_fun.h17

9.9各个H头文件关系17

1引言

1.1编写目的

作为一个大型的项目,每个工程师的编程习惯都不相同,所以对编程风格、规范进行统一就显得十分必要。

2概述

2.1目标

本文档为统一ISOS平台的编程规范而写作。

2.2适用范围

本文档虽然为ISOS平台制作,但可以推广到其他项目组。

2.3需求

Ø

程序最重要的是正确性,其次是可维护性,最后才是效率;

学习如何写优美的程序与学习如何正确地编写代码同样重要;

让程序尽量简单易懂,即使违背了某些规则也无关紧要;

一个运行正常但没有注释的程序如同一个等待爆炸的定时炸弹,因为早晚会有人修改或升级这个程序;

好风格应该成为一种习惯。

如果你在开始写代码时就关心风格问题,如果你花时间去审视和改进它,你将会逐渐养成一种好的编程习惯。

一旦这种习惯变成自动的东西,你的潜意识就会帮你照料许多细节问题,甚至你在工作压力下写出的代码也会更好。

2.4局限

此文档完成时间比较仓促,需要在后续实践中逐步完善。

3编程规范总原则

本规范具有强制性,一旦制定,必须按照规范执行

规范在未经批准修改之前,必须按照现行规范执行

4标识符

标识符的命名要清晰、明了,有明确含义。

使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。

标识符应当采用英文单词或其组合,切忌使用汉语拼音来命名。

4.1变量名

4.1.1不同作用域变量的命名

局部变量尽量包含较多的信息;

全局变量以首字母以g_开始命名;

定义类型和宏定义常数以大写字母命名;

变量的作用域越大,它的名字所带有的信息就应该越多。

局部变量:

ULONGulStudentAge;

全局变量:

ULONGg_ulSudentAge;

宏定义常数:

#defineSTUDENT_NUM10

类型定义:

typedefINT16Sint;

4.1.2变量类型的重定义

由于变量类型比较多,为了整个项目的统一,对一些常用的变量类型进行重新定义:

typedefcharCHAR;

//有符号的单字节变量类型

typedefunsignedcharUCHAR;

//无符号的单字节变量类型

typedefshortintSHORT;

//有符号的双字节变量类型

typedefunsignedshortintUSHORT;

//无符号的双字节变量类型

typedeflongLONG;

//有符号的四字节变量类型

typedefunsignedlongULONG;

//无符号的四字节变量类型

typedeflonglongLLONG;

//有符号的八字节变量类型

typedefunsignedlonglongULLONG;

//无符号的八字节变量类型

typedeffloatFLOAT;

//单精度浮点变量类型

typedefdoubleDOUBLE;

/双精度浮点变量类型

typedefvoidVOID;

typedefintBOOL;

//BOOL变量

typedefstruct{volatileintcounter;

}ATOMIC_S;

//需要原子操作的变量类型

4.1.3不同类型变量的命名(匈牙利命名法)

匈牙利命名法是一种命名约定。

匈牙利命名法把变量的类型 

(或者它的预期使用) 

等信息编码在变量名中。

一些常用的匈牙利命名法前缀

数据类型前缀例子

CHARccInChar

UCHARucucOutChar

SHORTssReturnValue

USHORTususControlWord

LONGllNumRecs

ULONGululLength

LLONGllllNumRecs

ULLONGullullLength

FLOATffStatic

DOUBLEddLength

BOOLblblFlag

TXT_BOX_SststBox//结构

enumTXT_BOX_MememBox//枚举

unionPROT_UununProto//联合

ATOMIC_SatatDataRef//原子

4.1.4指针变量的命名

对于指针的定义,名称大小写根据指针为全局/局部变量来定,但指针名必须以小写的“p”开头。

如:

ULONG*g_pulDay;

//全局指针

ULONG*pulKeyday;

//局部指针

ULONG**ppulKeyDay;

//指针的指针

4.1.5函数指针变量的命名

对于函数指针变量必须以pfunc开头。

main()

{

ULONGSSP_Max(LONG,LONG);

ULONG(*pfuncMax)();

//指向函数的指针申明

LONGa,b,c;

pfuncMax=SSP_Max;

//给指向函数的指针赋值

SSP_Scanf(“%d,%d”,&

a,&

b);

c=(*pfuncMax)(a,b);

//调用指向的函数

SSP_Printf(“a=%d,b=%d,max=%d”,a,b,c);

}

模块KEY.C中的变量:

USHORTg_usKeyNum;

ULONGg_ulKeyNumBuff[10];

4.2函数名

函数名的命名应象全局变量一样采用首字母大写方式

函数名的开始应以“模块名_”的格式注明函数所属模块

例如:

KEY.C模块的函数

VOIDKEY_Init(VOID);

VOIDKEY_StartScan(VOID);

VOIDKEY_StopScan(VOID);

4.3数据结构

数据结构名称必须以st开头

数据结构必须重新定义为一个以_S结尾,紧接着大写字母表示的名称

typedefstructstTxtBox

{

ULLONG*pullTxt;

//文字

ULLONGullTxtFont;

//字体

ULLONGullSta;

//文本框状态模式

ULLONGulWorkMod;

//工作模式

}TXT_BOX_S;

5排版

名字的合理选择可以帮助理解程序。

同样,也应该以尽可能一目了然的形式书写语句。

这就像保持书桌整洁可以使你容易找到东西一样。

5.1用缩进格式书写代码

函数或过程的开始、结构定义及循环、判断等语句中的代码都要采用缩进;

缩进的空格数为4个;

使用空格键,不使用TAB键;

程序块的分界符(‘{’和‘}’)应各独占一行。

例:

for(i=0;

i<

STUDENT_NUM;

i++)

{

if(fScore[i]>

0)

total_score+=fScore[i];

}

5.2长语句

较长的语句(多于80字符)要分成多行书写;

长表达式要在低优先级操作符处划分新行,操作符放在新行之首;

划分出的新行要进行适当的缩进,使排版整齐,语句可读;

不允许把多个短语句写在一行中,即一行只写一条语句。

修改前:

MeasData.TransT[dir]=TransT[dir]*SetData.Filter+TransT[dir]*(1-SetData.Filter);

修改后:

MeasData.TransT[dir]=TransT[dir]*SetData.Filter

+TransT[dir]*(1-SetData.Filter);

5.3空行和空格的使用

相对独立的程序块之间、变量定义之后语句开始以前必须加空行;

逗号、分号只在后面加空格;

比较操作符、赋值操作符、算术操作符、逻辑操作符、位域操作符等双目操作符的前后加空格;

“!

”、“~”、“++”、“--”、“&

”等单目操作符前后不加空格;

"

->

"

、"

."

前后不加空格。

VOIDFunc1(LONGlx,LONGly,LONGlz);

//良好的风格

VOIDFunc1(LONGlx,LONGly,LONGlz);

//不良的风格

x=a<

b?

a:

b;

x=a<

b?

a:

b;

//不好的风格

int*x=&

y;

int*x=&

y;

6表达式与基本语句

6.1运算表达式

不要编写太复杂的复合表达式;

i=a>

=b&

&

c<

d&

c+f<

=g+h;

//复合表达式过于复杂

不要有多用途的复合表达式;

d=(a=b+c)+r;

//应拆分为两个语句:

a=b+c;

d=a+r;

如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。

if(a|b&

a&

c)//不良的风格

if((a|b)&

(a&

c))//良好的风格

注意:

只需记住加减运算的优先级低于乘除运算,其它地方

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1