软件设计规范方案_第1页
软件设计规范方案_第2页
软件设计规范方案_第3页
软件设计规范方案_第4页
软件设计规范方案_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

深知I市德卡科技盲眼公m

SHENZHENDECARDSMARTCARDTECHCO.,LTD.

软件设计标准

制定:

文件编号生效日期版本号

h

修订履历

序号版本修订内容修订人修订日期

会签与文件发放:

会签部门会签人会签日期签收部门签收人签收日期

文件编号

♦DM深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

目录

第一章、工程模块划分...............................................24

一、模块划分.......................................................24

二、模块命名.......................................................25

第二章、文件格式...................................................26

一、C文件格式说明:................................................26

1s文件创立及修改说明区.............................................26

2、头文件引用区.....................................................26

3、全局变量定义区...................................................27

4、驱动函数区......................................................27

5、应用函数区......................................................27

6、文件完毕说明.....................................................28

二、h文件格式说明..................................................28

1、文件创立及修改说明区.............................................28

2、防重调用定义.....................................................29

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

3、头文件引用......................................................29

4、控制接口定义区..................................................29

5、常量定义区.......................................................29

6、宏调用定义区.....................................................30

7、类型定义区......................................................30

8、外部引用变量区...................................................30

9、外部引用函数区...................................................31

10、操作流程说明区.................................................31

11、文件完毕说明...................................................32

第三章、命名规那么.................................................32

一、函数命名规那么.................................................32

二、变量命名规那么.................................................33

三、宏命名规那么...................................................33

四、文件命名规那么.................................................34

五、新定义变量类型命名规那么.......................................34

六、命名考前须知:.................................................34

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

1、标识符命名根本原那么.............................................34

2、命名中假设使用特殊约定或缩写,那么要有注释说明...................34

3、局部循环变量也必须按照变量命名规那么来定义.......................35

4、不要用数字或较奇怪的字符来定义标识符............................35

5、用正确的反义词组命名具有互斥意义的变量或相反动作的函数等........35

6、防止使用以下划线开场和结尾的定义.................................35

7、程序中不要出现仅靠大小写区分的相似的标识符.......................35

8、标识符缩写......................................................36

9、函数名应准确描述函数的功能......................................36

10、防止使用无意义或含义不清的动词为函数命名.......................36

第四章、代码书写标准...............................................36

一、根本原那么.....................................................36

二、排版...........................................................36

1、缩进风格.........................................................36

2、不要使用[TAB]键...............................................36

3、空行.............................................................37

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

4、语句长度要小于80个字符.........................................38

5、长语句换行......................................................38

6、长表达式换行.....................................................38

7、假设函数的参数较长,那么要进展适当的划分........................39

8、一行只写一条语句.................................................39

9、括号{}...........................................................39

10、语句缩进要求...................................................40

11、分界符.........................................................41

12、空格...........................................................42

三、注释...........................................................43

1、注释量..........................................................43

2、函数头部注释....................................................44

3、代码与注释同时修改..............................................44

4、注释的内容要清楚、明了,含义准确,防止注释二义性................44

5、防止在注释中使用缩写,特别是非常用缩写..........................44

6、注释书写位置....................................................44

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

7、变量、常量命名不能充分自注释的,必须加以注释....................45

8、数据构造命名不能充分自注释的,必须加以注释......................46

9、全局变量注释....................................................46

10、注释要与说描述的内容进展同样的缩排.............................47

1K将注释与其上面的代码用空行隔开.................................48

12、连续case语句处理时,必须编写注释..............................48

13、代码或表达式的中间制止插入注释.................................50

14、通过正确命名使代码成为自注释的.................................50

15、在代码的功能、意图层次上进展注释,提供有用、额外的信息.........50

16、在程序块的完毕行右方加注释标记,以说明某程序块的完毕...........51

17、注释格式.......................................................51

18、采用中文注释...................................................52

19、使用#if0和#endif注释代码块....................................52

20、注释不能嵌套...................................................52

四、代码可读性.....................................................52

1、使用小括号明确表达式的操作顺序...................................52

文件编号

IK4深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

2、用有意义的枚举和宏替代数字.......................................53

3、源程序中关系较为严密的代码应尽可能相邻...........................54

4、用多行简单语句替代复杂语句......................................54

五、变量,构造.....................................................55

1、公共变量.........................................................55

1.1、去掉没必要的公共变量...........................................55

1.2、仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系…55

1.3、明确公共变量与操作此公共变量的函数或过程的关系.................55

1.4、要慎重向公共变量传递数据.......................................56

1.5、防止局部变量与公共变量同名。...................................56

1.6、公共变量仅由模块或函数创立和修改,其余模块和函数只能访问.......56

2、局部变量.........................................................56

2.1、严禁使用未经初始化的变量作为右值...............................56

2.2、不使用与硬件或软件环境关系密切的变量...........................56

2.3、变量声明时,同一类型,不同意义的多个变量,要分行,便于区分.....57

2.4、对只设置一次的变量,宜使用''const”限定词进展声明...............57

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

2.5、防止在函数中使用static局部变量.................................57

3、数组.............................................................57

3.1、数组大小及初始值要明确定义.....................................57

3.2、数组、构造和联合的初始化列表应显式描述.........................57

4、构造、联合......................................................58

4.1、构造的功能要单一,是针对一种事务的抽象.........................58

4.2、不要设计面面俱到、非常灵活的数据构造...........................59

4.3、不同构造间的关系不要过于复杂...................................59

4.4、构造中元素的个数应适中.........................................60

4.5、构造体中元素的布局.............................................61

4.6、构造体设计要考虑兼容性.........................................62

4.7、跨平台数据构造,要考虑字节顺序及对齐问题.......................62

4.8、struct或union类型中至少应有一个成员...........................63

4.9、struct或union类型的成员类型...................................63

5、枚举.............................................................64

5.1、枚举元素的初始化应完整.........................................64

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

6、自定义数据类型...................................................64

6.1、合理地设计数据并使用自定义数据类型.............................64

6.2、自定义数据类型命名要恰当.......................................64

7、类型转换.........................................................65

7.1、慎重使用数据类型的强制转换.....................................65

7.2,了解编译系统默认的数据类型转换.................................65

73、应制止signed类型与unsigned类型之间的隐式转化...............65

7.4、应制止int类型与float类型的隐式转化...........................65

8、指针.............................................................65

8.1、不应对指针变量使用强制类型转换赋值.............................65

8.2、不应把自动类型的局部变量的地址赋值给外部指针...................65

8.3、指针的指针不应超过两级.........................................66

8.4、指向不同数据类型的指针之间不应相互转换.........................66

8.5、指针转换过程中不应丧失指针的const、volatile属性................66

8.6、只有指向数组的指针才允许进展算术运算...........................66

8.7、只有指向同一数组的两个指针才允许相减...........................67

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

8.8、只有指向同一数组的两个指针才允许用>、>=、<和<=等关系运算符进展比拟67

8.9、指针的索引值不应为负...........................................68

8.10、不应对指针值可能为NULL的指针进展算术运算....................68

8.11、调用返回类型为指针的函数后,应进展是否为空的判断.............68

8.12、局部变量的地址不应在本对象消亡后传给另外一个对象.............68

8.13、一个未知大小的对象的指针不应成为加法或者减法操作的左操作数……69

六、函数...........................................................69

1、函数编写原那么...................................................69

1.1、明确函数功能,准确〔而不是近似〕地实现函数设计.................69

1.2、函数的规模尽量限制在200行以内.................................69

1.3、一个函数仅完成一件功能.........................................69

1.4、为简单功能编写函数.............................................69

1.5、不要设计多用途面面俱到的函数...................................70

1.6、函数功能具有可预测性...........................................70

1.7、函数功能具有独立性.............................................71

1.8、防止函数出现随机内聚...........................................72

文件编号

IK4深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

1.9、功能不明确的较小函数,可以不必存在.............................73

1.10、设计高扇入、合理扇出〔小于7〕的函数..........................73

1.11、减少函数本身或函数间的递归调用...............................73

1.12、降低函数间的耦合度...........................................73

2、函数参数.........................................................74

2.1、明确接口函数参数的合法性检查者.................................74

2.2、防止将函数的参数作为工作变量...................................74

2.3、防止设计多参数函数,不使用的参数从接口中去掉...................75

2.4、非调度函数应减少或防止控制参数,尽量只使用数据参数.............75

2.5、检查函数所有参数输入的有效性...................................76

2.6、检查函数所有非参数输入的有效性,如数据文件、公共变量等.........76

2.7、调用函数时参数类型要一致.......................................77

2.8、防止使用BOOL参数.............................................77

2.9、在函数参数中不应使用static存储类标识符.........................77

2.10、函数参数数量..................................................77

2.11、宜防止函数参数在调用中未被使用................................77

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

3、函数返回.........................................................77

3.1、对所调用函数的错误返回码要仔细、全面地处理.....................77

3.2、函数的返回值要清楚、明了,让使用者不容易无视错误情况...........77

3.3、函数返回值要与赋值变量类型一致.................................77

3.4、对于提供了返回值的函数,在引用时最好使用其返回值...............78

3.5、函数只有一个出口...............................................78

4、可重入函数......................................................78

4.1、可重入函数使用局部变量.........................................78

4.2、可重入函数使用全局变量.........................................78

5、函数模块划分.....................................................79

5.1、仔细分析模块的功能,进展函数的划分和组织.......................79

5.2、如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题.….…79

5.3、函数内部的代码构造顺序.........................................80

6、循环语句.........................................................81

6.1、循环控制变量的类型应为整型.....................................81

6.2、循环控制变量应为局部变量.......................................81

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

6.3、for循环控制语句中的3个表达式只应和循环控制相关...............81

6.4、for循环不宜只执行一次..........................................82

7、判断语句.........................................................82

7.1、不要轻易用条件分支去替换逻辑表达式.............................82

7.2、switch语句中不应只包含default语句..............................82

7.3、所有非空的switchcase子句都应以break语句完毕..................82

74、switch控制表达式不应是一个常量或逻辑表达式.....................82

75、每一个switch语句都应至少有一个case子句........................82

7.6、case表达式的类型应与switch控制表达式的类型一致................82

7.7、case表达式的大小不应超过switch控制表达式的大小................82

8、赋值语句.........................................................82

8.1、尽量不使用条件赋值语句.........................................82

9、其他考前须知.....................................................83

9.1、防止函数中不必要语句,防止程序中的垃圾代码.....................83

9.2、在多任务操作系统的环境下编程,更要注意函数可重入性的构造.......83

9.3、将常用较长变量用宏替代.........................................83

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

七、预处理.........................................................83

1、宏...............................................................83

1.1、用宏定义表达式时,要使用完备的括号.............................83

12、将宏所定义的多条表达式放在大括号中.............................84

1.3、使用宏时,不允许参数发生变化...................................84

1.4、函数类宏调用时参数要完整.......................................85

2、条件编译.........................................................85

2.1、预处理语句“#if”和"#endif”不应分散在不同的文件之中...........85

2.2、被包含文件中的、'#else"、"#elseif"、"#endif"不应与父文件中的、'#if"匹配

...................................................................................................................................................85

2.3、、'#if"表达式中使用的宏应该已经被定义,并且、'#if"表达式只能包含整型常量85

2.4、宏如果需要被重定义,应该先用、'#undef"解除前面的定义...........86

八、中断...........................................................86

1、中断效劳程序不应有返回值........................................86

2、中断效劳程序中不应使用printf()函数................................86

3、对于中断中使用到的非局部变量,在中断处理函数中应对其进展入栈保护..86

4、调用中断处理程序中的变量要进展开关中断处理......................86

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

5、对于开关中断,要注意成对匹配.....................................86

6、中断效劳程序代码要简单化........................................86

九、程序可测性.....................................................87

1、原那么...........................................................87

1.1、统一的调测开关及打印函数.......................................87

1.2、统一的打印信息串格式...........................................87

1.3、正式软件产品中应把断言及其它调测代码去掉〔即把有关的调测开关关掉〕87

14、用调测开关切换软件的DEBUG版和正式版..........................87

1.5、软件DEBUG版和发行版在实现功能上具有一致性...................87

1.6、构造测试环境和测试用例.........................................87

1.7、预先设计程序调测的方法和手段及各种调测开关.....................88

1.8、调测开关应分为不同级别和类型...................................88

2、断言.............................................................88

2.1、使用断言来发现软件问题,提高代码可测性.........................88

2.2、用断言来检查程序正常运行时不应发生但在调测时有可能发生的非法情况89

2.3、不能用断言来检查最终产品肯定会出现且必须处理的错误情况.........89

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

2.4、对较复杂的断言加上明确的注释...................................89

2.5、用断言确认函数的参数...........................................89

2.6、用断言保证没有定义的特性或功能不被使用.........................90

2.7、用断言对程序开发环境〔OS/Compiler/Hardware〕的假设进展检查....90

2.8、编写防错程序,然后在处理错误之后可用断言宣布发生错误...........91

十、程序效率.......................................................92

1、原那么...........................................................92

1.1、编程时要经常注意代码的效率.....................................92

1.2、提高代码效率的前提.............................................92

1.3、局部效率应为全局效率效劳.......................................92

1.4、合理划分模块函数...............................................93

1.5、不应花过多的时间拼命地提高调用不很频繁的函数代码效率...........93

1.6、不要一味追求紧凑的代码.........................................93

1.7、不应存在执行不到的代码.........................................93

1.8、去掉没必要的全局变量...........................................93

2、方法.............................................................93

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

2.1、解决软件空间效率1...................................................................................................93

2.2、解决软件空间效率2...................................................................................................94

2.3、循环体内工作量最小化...........................................95

2.4、仔细分析有关算法,并进展优化...................................95

2.5、仔细考察、分析系统及模块处理输入〔如事务、消息等〕的方式,并加以改良95

2.6、直接用汇编编写调用频繁或性能要求极高的函数.....................95

2.7、在多重循环中,应将最忙的循环放在最内层.........................96

2.8、尽量减少循环嵌套层次...........................................96

2.9、尽量不在循环体内放置判断语句...................................96

2.10、尽量用乘法或其它方法代替除法,特别是浮点运算中的除法.........98

2.11s应注意switch-case语句的使用.................................98

H---、程序质量.....................................................98

1、原那么...........................................................98

1.1、代码质量保证优先原那么.........................................98

1.2、合理划分子模块,提高可移植性和可重用性.........................99

1.3、提供良好的接口界面.............................................99

文件编号

IK4深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

1.4、系统具有一定容错能力...........................................99

2、方法.............................................................99

2.1、认认真真处处理理程程序序所所能能遇遇到到的的各各种种出出错错情情况况..........................................................99

2.2、系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用99

2.3、系统运行之初,要对加载到系统中的数据进展一致性检查.............99

2.4、严禁随意更改其它模块或系统的有关设置和配置....................100

2.5、不能随意改变与其它模块的接口..................................100

2.6、防止内存操作越界..............................................100

2.7、编程时,要防止差1错误........................................101

2.8、要时刻注意易混淆的操作符......................................101

2.9、条件判断语句必须处理所有情况..................................101

2.10、不要用goto语句..............................................101

2.11、尽量都采用标准语句和标准库函数..............................102

2.12、防止使用嵌入式汇编...........................................102

2.13、精心构造算法,并对其性能、效率进展测试......................102

2.14、对较关键的算法最好使用其它算法来确认.........................102

文件编号

IK4深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

2.15s时刻注意表达式是否会上溢、下溢.............................102

2.16、使用变量时要注意其边界值的情况.............................103

2.17、注意程序代码是否超过系统有关限制...........................103

2.18、循环、分支层次不要超过五层.................................103

2.19、不要比拟浮点数的相等.......................................103

2.20、关注共用体的存储、对齐模式.................................103

2.21、头文件中不应有对象或函数的定义.............................103

2.22、不应单独使用小写字母"I"或大写字母"。”作为变量名.........103

2.23、函数声明时参数不应只有类型名没有标识符.....................104

2.24、不应对有符号数进展位运算...................................104

2.25、无格式的字符型不应与负数常量和零比拟.......................104

2.26、无符号值不应与负数常量比拟.................................104

2.27、对变量进展移位操作应保证不会产生溢出和数据截短.............104

2.28、不应在布尔表达式中使用赋值操作符...........................104

2.29、不应对布尔表达式进展算术或者位运算.........................104

2.30、表达式的值在任何求值顺序下应保持一致.......................105

文件编号

♦的深圳市德卡科技

文件版本A1

生效日期发行类别■新增口修订

软件设计标准

发行部门研发中心

2.31、应应防防止止除除数数可可能能为为。。的的情情况况出出现现................................................................110055

2.32、赋值运算符的左操作数不应进展转换操作,并且应该是一个可更改的对象105

2.33、sizeof操作符不应用在有单边作用的表达式上.....................105

2.34、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论