软件的设计的要求规范_第1页
软件的设计的要求规范_第2页
软件的设计的要求规范_第3页
软件的设计的要求规范_第4页
软件的设计的要求规范_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、实用标准文案深圳市德卡科技目眼公mSHENZHEN DECARD SMARTCARD TECH CO.,LT»软件设计规范制定:审核:批准:精彩文档文件编号生效日期版本号分发部门修订履历厅P版本修订内容修订人修订日期会签与文件发放:会签部门会签人会签日期签收部门签收人签收日期5&U深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心第一章、项目模块划分 17一、模块划分 17二、模块命名 17第二章、文件格式 17一、C文件格式说明: 1

2、71、文件创建及修改说明区 172、头文件引用区 183、全局变量定义区 184、驱动函数区 185、应用函数区 196、文件结束说明 19二、h文件格式说明 191、文件创建及修改说明区 192、防重调用定义 203、头文件引用 204、控制接口定义区 205、常量定义区 216、宏调用定义区 217、类型定义区 218、外部引用变量区 229、外部引用函数区 2210、操作流程说明区 2211、文件结束说明 22深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心第三章、命名规则 23第三章、命名规则 23一、函数命名规则 23二、变量命名规则

3、23三、宏命名规贝U 24四、文件命名规则 24五、新定义变量类型命名规则 25六、命名注意事项: 251、标识符命名基本原则 252、命名中若使用特殊约定或缩写,则要有注释说明 253、局部循环变量也必须按照变量命名规则来定义 254、不要用数字或较奇怪的字符来定义标识符 255、用正确的反义词组命名具有互斥意义的变量或相反动作的函数等 266、避免使用以下划线开始和结尾的定义 267、程序中不要出现仅靠大小写区分的相似的标识符 268、标识符缩写 269、函数名应准确描述函数的功能 2610、避免使用无意义或含义不清的动词为函数命名 26第四章、代码书写规范 26一、基本原则 26二、排版

4、 271、缩进风格 272、不要使用【TAH键 273、空行 274、语句长度要小于80个字符 285、长语句换行 286、长表达式换行 28深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心7、若函数的参数较长,则要进行适当的划分 298、一行只写一条语句 299、括号 2910、语句缩进要求 3011、分界符 3112、空格 32三、注释 331、注释量 332、函数头部注释 333、代码与注释同时修改 344、注释的内容要清楚、明了,含义准确,防止注释二义性 345、避免在注释中使用缩写,特别是非常用缩写 346、注释书写位置 347、变量、

5、常量命名不能充分自注释的,必须加以注释 348、数据结构命名不能充分自注释的,必须加以注释 359、全局变量注释 3510、注释要与说描述的内容进行同样的缩排 3511、将注释与其上面的代码用空行隔开 3612、连续case语句处理时,必须编写注释 3713、代码或表达式的中间禁止插入注释 3914、通过正确命名使代码成为自注释的 3915、在代码的功能、意图层次上进行注释,提供有用、额外的信息 3916、在程序块的结束行右方加注释标记,以表明某程序块的结束 3917、注释格式 4018、采用中文注释 4019、使用#if0 和#endif 注释代码块 40深圳市德卡科技有限公司文件编号文件版

6、本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心20、注释不能嵌套 41四、代码可读性 411、使用小括号明确表达式的操作顺序 412、用有意义的枚举和宏替代数字 413、源程序中关系较为紧密的代码应尽可能相邻 424、用多行简单语句替代复杂语句 42五、变量,结构 431、公共变量 431.1、 去掉没必要的公共变量 431.2、 仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系.431.3、 明确公共变量与操作此公共变量的函数或过程的关系 431.4、 要谨慎向公共变量传递数据 441.5、 防止局部变量与公共变量同名。 441.6、 公共变量仅由模块或函数创建和

7、修改,其余模块和函数只能访问.442、局部变量 442.1、 严禁使用未经初始化的变量作为右值 442.2、 不使用与硬件或软件环境关系密切的变量 442.3、 变量声明时,同一类型,不同意义的多个变量,要分行,便于区分.442.4、 对只设置一次的变量,宜使用“ const ”限定词进行声明 442.5、 避免在函数中使用static 局部变量 443、数组 453.1、 数组大小及初始值要明确定义 453.2、 数组、结构和联合的初始化列表应显式描述 454、结构、联合 454.1、 结构的功能要单一,是针对一种事务的抽象 454.2、 不要设计面面俱到、非常灵活的数据结构 46深圳市德卡

8、科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心464.3、4.4、 结构中元素的个数应适中4.5、 结构体中元素的布局.4748494.6、 结构体设计要考虑兼容性4.7、跨平台数据结构,要考虑字节顺序及对齐问题494.8、struct 或union类型中至少应有一个成员.504.9、struct或union类型的成员类型505、枚举505.1、枚举元素的初始化应完整506、自定义数据类型516.1、合理地设计数据并使用自定义数据类型516.2、自定义数据类型命名要恰当517、类型转换.517.1、谨慎使用数据类型的强制转换517.2、了解编译系统默认的

9、数据类型转换.517.3、应禁止signed类型与unsigned类型之间的隐式转化527.4、应禁止int 类型与float类型的隐式转化528、指针528.1、不应对指针变量使用强制类型转换赋值5252528.4、 指向不同数据类型的指针之间不应相互转换528.5、 指针转换过程中不应丢失指针的const、volatile 属性528.6、 只有指向数组的指针才允许进行算术运算528.7、 只有指向同一数组的两个指针才允许相减538.8、只有指向同一数组的两个指针才允许用、=、和方关系运算符进行比较538.2、 不应把自动类型的局部变量的地址赋值给外部指针8.3、 指针的指针不应超过两级深

10、圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心548.10、不应对指针值可能为NULL的指针进行算术运算.548.11、 调用返回类型为指针的函数后,应进行是否为空的判断548.12、 局部变量的地址不应在本对象消亡后传给另外一个对象548.13、 一个未知大小的对象的指针不应成为加法或者减法操作的左操作数55六、函数551、函数编写原则551.1、 明确函数功能,精确(而不是近似)地实现函数设计551.2、 函数的规模尽量限制在200行以内.551.3、 一个函数仅完成一件功能551.4、 为简单功能编写函数.551.5、 不要设计多用途面面俱

11、到的函数561.6、 函数功能具有可预测性561.7、 函数功能具有独立性.561.8、 防止函数出现随机内聚571.9、 功能不明确的较小函数,可以不必存在58581.11、减少函数本身或函数间的递归调用.591.10、设计高扇入、合理扇出(小于 7)的函数.59591.12、降低函数间的耦合度.2、函数参数.2.1、明确接口函数参数的合法性检查者.592.2、防止将函数的参数作为工作变量592.3、避免设计多参数函数,不使用的参数从接口中去掉602.4、非调度函数应减少或防止控制参数,尽量只使用数据参数602.5、检查函数所有参数输入的有效性612.6、检查函数所有非参数输入的有效性,如数

12、据文件、公共变量等61深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心2.7、调用函数时参数类型要一致 622.8、 避免使用BOOL#数 622.9、 在函数参数中不应使用static 存储类标识符 622.10、 函数参数数量 622.11、 宜避免函数参数在调用中未被使用 623、函数返回 623.1、 对所调用函数的错误返回码要仔细、全面地处理 623.2、 函数的返回信要清楚、明了,让使用者不容易忽视错误情况 623.3、 函数返回值要与赋值变量类型一致 623.4、 对于提供了返回值的函数,在引用时最好使用其返回值 623.5、 函数

13、只有一个出口 624、可重入函数 624.1、 可重入函数使用局部变量 624.2、 可重入函数使用全局变量 635、函数模块划分 645.1、 仔细分析模块的功能,进行函数的划分和组织 645.2、 如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题 645.3、 函数内部的代码结构顺序 646、循环语句 656.1、 循环控制变量的类型应为整型 656.2、 循环控制变量应为局部变量 656.3、 for循环控制语句中的3个表达式只应和循环控制相关 656.4、 for循环不宜只执行一次 667、判断语句 667.1、 不要轻易用条件分支去替换逻辑表达式 667.2、 switc

14、h语句中不应只包含 default 语句 66深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心7.3、所有非空的switch case 子句都应以break语句结束.667.4、switch控制表达式不应是一个常量或逻辑表达式667.5、每一个switch语句都应至少有一个 case子句667.6、case表达式的类型应与switch控制表达式的类型一致.667.7、case表达式的大小不应超过 switch控制表达式的大小.668、赋值语句.668.1、尽量不使用条件赋值语句669、其他注意事项669.1、避免函数中不必要语句,防止程序中的垃圾

15、代码669.2、在多任务操作系统的环境下编程,更要注意函数可重入性的构造679.3、将常用较长变量用宏替代67七、预处理67671.1、用宏定义表达式时,要使用完备的括号671.2、将宏所定义的多条表达式放在大括号中671.3、使用宏时,不允许参数发生变化681.4、函数类宏调用时参数要完整682、条件编译.692.1、预处理语句“ #if ”和“#endif ”不应分散在不同的文件之中.692.2、被包含文件中的“ #else "、 “#elseif "、 “#endif ”不应与父文件中的“ #if ”匹配692.3、“#if ”表达式中使用的宏应该已经被定义,并且“

16、#if ”表达式只能包含整型常量692.4、宏如果需要被重定义,应该先用“ #undef”解除前面的定义.696969八、中断1、中断服务程序不应有返回值2、中断服务程序中不应使用printf() 函数69深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心3、对于中断中使用到的非局部变量,在中断处理函数中应对其进行入栈保护.694、调用中断处理程序中的变量要进行开关中断处理 695、对于开关中断,要注意成对匹配 696、中断服务程序代码要简单化 70九、程序可测性 701、原则 701.1、 统一的调测开关及打印函数 701.2、 统一的打印信息用

17、格式 701.3、 正式软件产品中应把断言及其它调测代码去掉(即把有关的调测开关关掉)701.4、 用调测开关切换软件的DEBU蕨和正式版 701.5、 软件DEBUGS和发行版在实现功能上具有一致性 701.6、 构造测试环境和测试用例 701.7、 预先设计程序调测的方法和手段及各种调测开关 701.8、 调测开关应分为不同级别和类型 712、断言 712.1、 使用断言来发现软件问题,提高代码可测性 712.2、 用断言来检查程序正常运行时不应发生但在调测时有可能发生的非法情况722.3、 不能用断言来检查最终产品肯定会出现且必须处理的错误情况 722.4、 对较复杂的断言加上明确的注释

18、 722.5、 用断言确认函数的参数 722.6、 用断言保证没有定义的特性或功能不被使用 722.7、 用断言对程序开发环境(OS/Compiler/Hardware )的假设进行检查.732.8、 编写防错程序,然后在处理错误之后可用断言宣布发生错误 73十、程序效率 741、原则 741.1、 编程时要经常注意代码的效率 74深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心1.2、提高代码效率的前提 741.3、 局部效率应为全局效率服务 751.4、 合理划分模块函数 751.5、 不应花过多的时间拼命地提高调用不很频繁的函数代码效率 7

19、51.6、 不要一味追求紧凑的代码 751.7、 不应存在执行不到的代码 751.8、 去掉没必要的全局变量 752、方法 752.1、 解决软件空间效率1 752.2、 解决软件空间效率2 762.3、 循环体内工作量最小化 772.4、 仔细分析有关算法,并进行优化 772.5、 仔细考查、分析系统及模块处理输入(如事务、消息等)的方式,并加以改进 772.6、 直接用汇编编写调用频繁或性能要求极高的函数 772.7、 在多重循环中,应将最忙的循环放在最内层 772.8、 尽量减少循环嵌套层次 782.9、 尽量不在循环体内放置判断语句 782.10、 尽量用乘法或其它方法代替除法,特别是

20、浮点运算中的除法 792.11、 应注意switch-case 语句的使用 80H一、程序质量 801、原则 801.1、 代码质量保证优先原则 801.2、 合理划分子模块,提高可移植性和可重用性 801.3、 提供良好的接口界面 801.4、 系统具有一定容错能力 802、方法 81深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心2.1、认真处理程序所能遇到的各种出错情况 812.1、认真处理程序所能遇到的各种出错情况 812.2、 系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用812.3、 系统运行之初,要对加载到系统

21、中的数据进行一致性检查 812.4、 严禁随意更改其它模块或系统的有关设置和配置 812.5、 不能随意改变与其它模块的接口 812.6、 防止内存操作越界 812.7、 编程时,要防止差1错误 822.8、 要时刻注意易混淆的操作符 822.9、 条件判断语句必须处理所有情况 822.10、 不要用goto语句 822.11、 尽量都采用标准语句和标准库函数 822.12、 避免使用嵌入式汇编 822.13、 精心构造算法,并对其性能、效率进行测试 832.14、 对较关键的算法最好使用其它算法来确认 832.15、 时刻注意表达式是否会上溢、下溢 832.16、 使用变量时要注意其边界值的

22、情况 832.17、 注意程序代码是否超过系统有关限制 842.18、 循环、分支层次不要超过五层 842.19、 不要比较浮点数的相等 842.20、 关注共用体的存储、对齐模式 842.21、 头文件中不应有对象或函数的定义 842.22、 不应单独使用小写字母“ l ”或大写字母" O'作为变量名 842.23、 函数声明时参数不应只有类型名没有标识符 842.24、 不应对有符号数进行位运算 842.25、 无格式的字符型不应与负数常量和零比较 842.26、 无符号值不应与负数常量比较 85深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口

23、修订发行部门研发中心852.27、2.28、 不应在布尔表达式中使用赋值操作符852.29、 不应对布尔表达式进行算术或者位运算852.30、 表达式的值在任何求值顺序下应保持一致852.31、 应避免除数可能为0的情况出现.852.32、 赋值运算符的左操作数不应进行转换操作,并且应该是一个可更改的对象852.33、 sizeof操作符不应用在有单边作用的表达式上852.34、 留心具体语言及编译器处理不同数据类型的原则及有关细节86十二、代码代码编辑、编译、审查861、打开编译器的所有告警开关对程序进行编译862、在产品软件(项目组)中,要统一编译开关选项863、通过代码走读及审查方式对代

24、码进行检查864、测试部测试产品之前,应对代码进行抽查及评审865、养成随时保存编写代码的习惯866、同产品软件(项目组)内,最好使用相同的编辑器,并使用相同的设置选项867、要小心地使用编辑器提供的块拷贝功能编程868、合理地设计软件系统目录,方便开发人员使用86附录A常用数据类型及简写87附录B常用单词及缩写88附录C常见反义词组.90附录D常见命名规则.92、匈牙利命名法92、骆驼(CameD命名法.92三、帕斯卡(Pascal)命名法92四、下划线命名法924 口&U深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心深圳市德卡科技有

25、限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心第一章、项目模块划分、模块划分将整个项目按照功能进行模块划分,各个模块相互独立,每个模块由一系列 c文件和h文 件组成。简单功能的模块采用一个 c文件和h文件接口,复杂功能的模块可能需要多个 c文件 和h文件。、模块命名按照模块所实现功能的英文名称或者简写命名,全部采用小写字母,多于1个单词的中间加下划线。例如:模块命名说明液晶1cd.c1cd.h液晶初始化,字符、汉字和图片显示1cd_fonts.c1cd_fonts.h液晶自定义字库按键key.c key.h按键初始化,键值列表,取按键值指示灯led.cled.

26、h寸斤灯初始化,闪烁控制数码管ledseg.c ledseg.h数码管初始化,数字显示,特殊字符显示蜂鸣器beep.cbeep.h蜂鸣器初始化,鸣叫控制第二章、文件格式一、c文件格式说明:1、文件创建及修改说明区4 船口&u深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心¥事申中*|甲i|i率卑卓L申中审胭fc卓申中中也朝量申jfiafc华字申*iiaf *申申*a心nyy ; ghl ( j / *SHENZHEN DECARD TEcijtfOLXlES Co. # LTD.*不*http!/ F trrt, drcard,

27、 c ca.*-"Fil® 113 fg* * Ci-eate by!zp* * Create date:201IMJ2-20* * Vercicn:1.0* * D«scriptioits:檬板* *File Info* * Modify bri* * Modify datu11* * Version:* * Dfegcriptiatu:*融中* T 4浦0攵9咀*a,-*1!kToH* *,* *事例.林卓京3 *-I*噬虹*-*格率* Qc李i|E京才卓*帆*科 亭京E#1拿|11季坦耳,明主要包含:公司信息:公司名称、公司网站。创建信息:创建者名称,创建日

28、期,最初版本号,文档内容描述。修改信息:修改者名称,修改日期,修改后版本号,修改内容描述。可参考模块template.c »说明:与硬件相关的文件可以在此增加说明,如芯片型号等。2、头文件引用区Binelude <str£nfi. h> it include r-emplate h主要包含:系统头文件引用:文件名包含在尖括号中。自定义头文件引用:文件名包含着双引号中。可参考模块template.c »3、全局变量定义区*址*4£*,*4:*九*址*,*班*4£*«*-*,*#*耕* *全局变量定义区*#*导*方*"

29、;*审*鼻*#*营*#*卓*:*:*季*尊*季*名*"* /volati le uch曰丁 g_TeanplateParaSign = 0慢板参数标志主要包含:全局变量定义区说明注释行:全局变量定义:要赋初值。全局变量注释:可参考模块template.c。4、驱动函数区深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心总,* jl 印,*m4l*i* *<>141*JuU(,*jk* 翻 jMl>k *,*><,南,和"*<* -*卓策*3Ml卓鼻*,* *3E前两效区林本率多*本中格中和15

30、*事对碎率率*=*楙杂舸悔*柑T*落本林市*和fl本幸珅木辛串号率奈卡依*察?赛群占率-H*本:林事*本辛率到噜宰相f;本季*冬辛韦斗小 ;卓4:*新峰*"5flM*季*寄奉"*务最东电事M4U5率*在觉*1$44*心*学*上量东¥*#+晨春器*+*藁*卷*4«*聿:率*隹量中建*力*学* *函数功2维 但吃眄能见* *恭新无林返国;无*44*思* X*卷率藁*4:点*本/4小事密率4*我市*电单*44求聿*季*率*聿*索*4需水*44率学*代量*叔玳率*4*4:*坤*4*,率*和聿*4*聿唾*比*4*点* void IHP_InicivoirfJ主要包

31、含:驱动函数区说明注释行:函数说明:包含函数说明,参数说明,返回值说明。函数体:可参考模块template.c »5、应用函数区主要包含:应用函数区说明注释行:函数说明:包含函数功能说明,参数说明,返回值说明。函数体:可参考模块template.c »6、文件结束说明/ 暮*:|*4(* *f*:fi* *?|c#*:tn|*:f*:f0)*.*f*:fr*|c#*4D|*fc*40k*,睢*,*44科End Of File* 害* 弯* 事* 害* *:*31c 室* *素*霄*:*:*主要包含:文件结束说明:End Of File可参考模块template.c 

32、7;二、h文件格式说明1、文件创建及修改说明区DSC深圳市德卡科技有限公司文件编号文件版本生效日期软件设计规范发行类别发行部门新增公司信息:公司名称、公司网站。创建信息:创建者名称,创建日期,最初版本号,文档内容描述。修改信息:修改者名称,修改日期,修改后版本号,修改内容描述。可参考模块template.h »A1修订研发中心3、头文件引用include<strins h3inc1udeystype. h主要包含:系统头文件引用:文件名包含在尖括号中。自定义头文件引用:文件名包含着双引号中。可参考模块template.h »4、控制接口定义区GPIOF主要包含:控制口

33、线定义区说明注释行:.Q&U深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心接口定义:全部采用大写字母,单词间以下划线分割注释说明:可参考模块template.h »5、常量定义区*常量定义区*?*等*f:*:!|rf *木*本*卞*丰*#*率等*¥*f:*;fr;*率*布*本*车率*$*率等*等*率等;define TMP MAX BUFF2uG/7缓湎应热去良4主要包含:常量定义区说明注释行:常量定义:全部采用大写字母,单词间以下划线分割注释说明:可参考模块template.h »6、宏调用定义区/*#*

34、#*:*相*宏调用定义区擀*号*噂密席*点*塞啪*第*8*:*«*名*4:*4*且率*收*擀*喉*相*擀玳*席*羸/ define TMP_S (a,b)(B-b) 求和运算主要包含:宏调用定义区说明注释行:宏调用处理:注释说明:可参考模块template.h »7、类型定义区/布 *3*霄*事*事*聿*3*霄*不*本率*东*事*¥率*3*考*+美型定文区* 叁 * 羊 *毋* 址*告* 麦 * *叁* typedef structu int ui SendLen;发烤数据长度uint uiReceiveLen:接收数据代底.uchar ucScndBuff rT

35、MP_MAX_B(TF:.uchar ucRec e iveBu f f :TMP_MAX_BUFFj , 接收踪据T31FC0MMLNI CATION主要包含:类型定义区说明注释行:类型定义:注释说明:结构体成员要单独说明。可参考模块template.h »4。口&u深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心8、外部引用变量区擀*叱*拿掌*辛拿*将*拿*、阜*中*松*擀*睢*第*拿*«:*辛*3ra外部引用变量区*#*考* * * 等*/*辜*#*寺*丰*考* extern, valatile uchar g.

36、TeuiplateParaSign ,模板参散标志主要包含:外部应用变量区说明注释行:引用变量声明:以 extern关键字开始注释说明:可参考模块template.h »9、外部引用函数区主要包含:外部应用函数区说明注释行:函数注释说明:包含函数功能说明,参数说明,返回值说明引用函数声明:以 extern关键字开始可参考模块template.h »10、操作流程说明区*g名*它*它*聿*哀*尊*尊*季*尊*"*亳*亳*"*操作流程说明区*章*椅*楙*吐*松*擀*吐*棉*楙*棉*楙*童*棉*擀*吐*橘*楙*杆*擀*楙*拿*/ .拿*棉*楙*率*禽*松*擀*

37、熏*离*榕*点*擀*楙*童*总*榕*制*密*制*熏*林*榕*点*定* U模块初始化.皿须完成而始化后才能操作模决其他函数一L 1,模块硬件接口初始化,进人步臊L 21.2、模块参数初始化,进人步骤工2.接收数据.敖据由主机下发,模域接收成功后进行解析处理2.1、凄收主机下发数提,数据不符合优选要求,进入步骤*h数提符合协议要求.进入步骤222, 2.协议解析,根据不同命专字执行相应操作.进入步藤2, 3,h一将执好给果打包处建,上隹主也进入步骤21|*x*w*w*w*t*w*w*w*w*x»*jr*w*/主要包含:操作流程说明区说明注释行:模块执行流程说明:说明要详细,执行步骤要明确

38、。可参考模块template.h »11、文件结束说明深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心申率*申*申*4*#率中中*率率率* 申*|申申*中*l|i*本卡*申*H *申申科博率市:中f 卡率* *事草本* *i|i:i|r*Ml中申*率*+*中审*申审*舸,本审:率啊科End Of File电*单东*幸靠季必靠*和"*拿IW章/单*京享*牵4/或*艇*东牵*靠*常*章东季*打*卓*科I*卓*聿*聿串躯卓*卓京*卓*掌屯出k*参佯K*束相艮中*率选主要包含:文件结束说明:End Of File可参考模块templa

39、te.h »第三章、命名规则、函数命名规则格式如下:序号说明字体选择备注1模块名称大写必选以最直观模式给用户区分/、同的模块函数, 采用模块英文名称或者简写2下划线必选间隔符3函数动作首字母大写必选动作英文名称或者简写,最多 2个单词4函数对象首字母大写可选对象英文名称或者简写,最多 2个单词5函数范围首字母大写可选范围英文名称或者简写,最多 2个单词例如:LCD_DispWord,表示液晶模块显示汉字函数命名的一个重要原则是望文知意(其他人看到函数名就大体知道函数功能),必须考虑命名的准确性,命名体现函数的功能,而不要体现函数的实现方法。二、变量命名规则局部变量命名:格式如下:序号

40、说明字体选择备注1变量类型简写小写必选以最直观模式给用户区分不向的变量类型,口&U深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心最多2个字母长度,具体参考附录 A常用 变量类型及简写2变量修饰首字母大写可选修饰词英文名称或者简写,最多 2个单词3变量名称首字母大写必选名称英文名称或者简写,最多 2个单词例如:uchar ucCurrentValue;表小无符号类型,当前值数组变重 命名时在局部变量类型前增加前缀子母a 。例如:uchar aucSendBuff10;指针变重 命名时在局部变量类型前增加前缀子母p 。例如:uchar *p

41、ucReceiveBuff10;全局变量命名时在局部变量类型前增加前缀字母“ g”和下划线。静态变量命名时在局部变量类型前增加前缀字母“ s”和下划线。三、宏命名规则格式如下:序号说明字体选择备注1模块名称大写必选以最直观模式给用户区分/、同的模块宏,采 用模块英文名称或者简写2下划线必选间隔符3功能名称大写必选功能英文名称或者简写,最多 2个单词4下划线可选间隔符5修饰词大写可选修饰词英文名称或者简写,最多 2个单词例如:#define TMP_BUFF_MAX256/缓冲区最大长度四、文件命名规则格式如下(全部小写):序号说明字体选择备注1模块名称小写必选采用模块英文名称或者简写2下划线可

42、选3分类名称小写可选分类英文名称或者简写oac深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心4顿号必选.5文件类型小写必选代码文件(c),头文件(h)例如:液晶模块:lcd_driver.c lcd_driver.h lcd_fonts.c lcd_fonts.h按键模块:key.c key.h五、新定义变量类型命名规则新定义变量类型对变量进行命名时可以提出2个与其他类型不相同的字母前缀来表示,并在文件开始或者新类型定义时进行说明。六、命名注意事项:1、标识符命名基本原则标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解

43、的缩写,避免使人产 生误解。尽量采用英文命名,不可以用汉语拼音。标识符的长度应当符合" min-length &&max-information "原则。说明:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词 有大家公认的缩写。参考附录B常用单词及缩写2、命名中若使用特殊约定或缩写,则要有注释说明说明:应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说 明。3、局部循环变量也必须按照变量命名规则来定义说明:变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如 i写成j),而编译时又

44、检查不出来, 有可能为了这个小小的错误而花费大量的查错时间。4、不要用数字或较奇怪的字符来定义标识符示例:如下命名,使人产生疑惑。#define EXAMPLE_0_TEST#define EXAMPLE_1_TESTvoid TMP_SetSls00( uchar ucSls );应改为有意义的单词命名#define EXAMPLE_UNIT_TEST深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心#define EXAMPLE_ASSERT_TESTvoid TMP_SetUdtMsgSls(uchar ucSls );5、用正确的反义词组命

45、名具有互斥意义的变量或相反动作的函数等说明:可参考附录 C常见反义词组下面是一些在软件中常用的反义词组。示例:uint uiMinSum;uint uiMaxSum;uint TMP_AddUser( uchar *pucUserName );uint TMP_DeleteUser(uchar *pucUserName );6、避免使用以下划线开始和结尾的定义除了编译开关/头文件等特殊应用,应避免使用_EXAMPLE_TES七类以下戈IJ线开始和结尾的定义7、程序中不要出现仅靠大小写区分的相似的标识符例如:uint uix, uiX;/ 变量x与X容易混淆void TMP_foo(uint u

46、iX);/ 函数 foo 与 FOg易混淆void TMP_FOO(float fX);8、标识符缩写命名时尽量不使用单词缩写,如果单词太长必须缩写,应该省略其中的元音字母,以便望文知意,如 packet_header 缩写为 pkt_hdr ,而不要缩写为 pack_h。常用单词缩写见附录B常用单词及缩写9、函数名应准确描述函数的功能10、避免使用无意义或含义不清的动词为函数命名说明:避免用含义不清的动词如process、handle等为函数命名,因为这些动词并没有说明要具体做什么。第四章、代码书写规范一、基本原则制定规范的基本目的就是加强代码的可维护性,也就是说代码必须易于阅读,易于理解,易于测试,易于 移植。所有的代码必须采用ANSI C,标准函数原型必须采用ANSI C标准。保持代码语句和结构简单清晰,避免使用复杂语句。深圳市德卡科技有限公司文件编号文件版本A1生效日期软件设计规范发行类别新增口修订发行部门研发中心二、排版1、缩进风格程序块要采用缩进风格编写,缩进的空格数为4个。预处理语句、全局数据、函数原型、标题、附加说明、函数说明、标号等均顶格书写。语句块的“” "”配对对齐,并与其前一行对齐。2、不要使用【

温馨提示

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

评论

0/150

提交评论