软件设计规范标准.docx
《软件设计规范标准.docx》由会员分享,可在线阅读,更多相关《软件设计规范标准.docx(88页珍藏版)》请在课桌文档上搜索。
1、深知I市德卡科技有眼公司SHENZHENDECARDSMARTCARDTECHCO.,LTD.软件设计规范制定:审核:批准:文件编号生效日期版本号分发部门修订履历序号版本修订内容修订人修订日期会签与文件发放:会签部门会签人会签日期签收部门签收人签收日期深圳市德卡科技有限公司文件编号文件版本Al生效日期软件设计规范发行类别新增口修订发行部门研发中心深圳市德卡科技有限公司文件编号文件版本Al生效日期软件设计规范发行类别新增口修订发行部门研发中心第一章、项目模块划分16一、模块划分16二、模块命名16第二章、文件格式16一、c文件格式说明:161、文件创建及修改说明区162、头文件引用区173、全局
2、变量定义区174、驱动函数区175、应用函数区186、文件结束说明18二、h文件格式说明181、文件创建及修改说明区182、防重调用定义193、头文件引用194、控制接口定义区195、常量定义区206、宏调用定义区207、类型定义区208、外部引用变量区209、外部引用函数区2110、操作流程说明区2111、文件结束说明21第三章、命名规则22一、函数命名规则22深圳市德卡科技有限公司文件编号文件版本Al生效日期软件设计规范发行类别新增口修订发行部门研发中心二、变量命名规则22三、宏命名规则23四、文件命名规则23五、新定义变量类型命名规则23六、命名注意事项:231、标识符命名基本原则232
3、、命名中若使用特殊约定或缩写,则要有注释说明243、局部循环变量也必须按照变量命名规则来定义244、不要用数字或较奇怪的字符来定义标识符245、用正确的反义词组命名具有互斥意义的变量或相反动作的函数等246、避免使用以下划线开始和结尾的定义247、程序中不要出现仅靠大小写区分的相似的标识符248、标识符缩写259、函数名应准确描述函数的功能2510、避免使用无意义或含义不清的动词为函数命名25第四章、代码书写规范25一、基本原则25二、排版251、缩进风格252、不要使用【TAB】键253、空行254、语句长度要小于80个字符265、长语句换行266、长表达式换行277、若函数的参数较长,则要
4、进行适当的划分278、一行只写一条语句279、括号2810、语句缩进要求28深圳市德卡科技有限公司文件编号文件版本Al生效日期软件设计规范发行类别新增修订发行部门研发中心11、分界符2912、空格30三、注释311、注释量312、函数头部注释313、代码与注释同时修改314、注释的内容要清楚、明了,含义准确,防止注释二义性325、避免在注释中使用缩写,特别是非常用缩写326、注释书写位置327、变量、常量命名不能充分自注释的,必须加以注释328、数据结构命名不能充分自注释的,必须加以注释339、全局变量注释3310、注释要与说描述的内容进行同样的缩排3311、将注释与其上面的代码用空行隔开34
5、12、连续CaSe语句处理时,必须编写注释3513、代码或表达式的中间禁止插入注释3614、通过正确命名使代码成为自注释的3715、在代码的功能、意图层次上进行注释,提供有用、额外的信息3716、在程序块的结束行右方加注释标记,以表明某程序块的结束3717、注释格式3718、采用中文注释3819、使用#if0和#endif注释代码块3820、注释不能嵌套38四、代码可读性381、使用小括号明确表达式的操作顺序382、用有意义的枚举和宏替代数字393、源程序中关系较为紧密的代码应尽可能相邻394、用多行简单语句替代复杂语句40深圳市德卡科技有限公司文件编号文件版本Al生效日期软件设计规范发行类别
6、新增修订发行部门研发中心五、变量,结构401、公共变量401.1、 去掉没必要的公共变量401.2、 仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系.401.3、 明确公共变量与操作此公共变量的函数或过程的关系401.4、 要谨慎向公共变量传递数据411.5、 防止局部变量与公共变量同名。411.6、 公共变量仅由模块或函数创建和修改,其余模块和函数只能访问412、局部变量412.1、 严禁使用未经初始化的变量作为右值412.2、 不使用与硬件或软件环境关系密切的变量412.3、 变量声明时,同一类型,不同意义的多个变量,要分行,便于区分.412.4、 对只设置一次的变量,宜使
7、用“const”限定词进行声明422.5、 避免在函数中使用static局部变量423、数组423.1、 数组大小及初始值要明确定义423.2、 数组、结构和联合的初始化列表应显式描述424、结构、联合424.1、 结构的功能要单一,是针对一种事务的抽象424.2、 不要设计面面俱到、非常灵活的数据结构434.3、 不同结构间的关系不要过于复杂434.4、 结构中元素的个数应适中444.5、 结构体中元素的布局454.6、 结构体设计要考虑兼容性464.7、 跨平台数据结构,要考虑字节顺序及对齐问题464.8、 StrUet或Union类型中至少应有一个成员474.9、 StrUet或Unio
8、n类型的成员类型475、枚举47深圳市德卡科技有限公司文件编号文件版本Al生效日期软件设计规范发行类别新增修订发行部门研发中心5.1、枚举元素的初始化应完整476、自定义数据类型476.1、 合理地设计数据并使用自定义数据类型476.2、 自定义数据类型命名要恰当477、类型转换487.1、 谨慎使用数据类型的强制转换487.2、 了解编译系统默认的数据类型转换487.3、 应禁止signed类型与unsigned类型之间的隐式转化487.4、 应禁止int类型与float类型的隐式转化488、指针488.1、 不应对指针变量使用强制类型转换赋值488.2、 不应把自动类型的局部变量的地址赋值
9、给外部指针488.3、 指针的指针不应超过两级498.4、 指向不同数据类型的指针之间不应相互转换498.5、 指针转换过程中不应丢失指针的COilSt、VOlatile属性498.6、 只有指向数组的指针才允许进行算术运算498.7、 只有指向同一数组的两个指针才允许相减498.8、 只有指向同一数组的两个指针才允许用、=、和二等关系运算符进行比较508.9、 指针的索引值不应为负508.10、 10、不应对指针值可能为NULL的指针进行算术运算508.11、 调用返回类型为指针的函数后,应进行是否为空的判断508.12、 12、局部变量的地址不应在本对象消亡后传给另外一个对象508.13、
10、一个未知大小的对象的指针不应成为加法或者减法操作的左操作数.51六、函数511、函数编写原则511.1、 明确函数功能,精确(而不是近似)地实现函数设计511.2、 函数的规模尽量限制在200行以内511.3、 一个函数仅完成一件功能52深圳市德卡科技有限公司文件编号文件版本Al生效日期软件设计规范发行类别新增口修订发行部门研发中心1.4、为简单功能编写函数521.5、 不要设计多用途面面俱到的函数521.6、 函数功能具有可预测性521.7、 函数功能具有独立性531.8、 防止函数出现随机内聚531.9、 功能不明确的较小函数,可以不必存在541.10、 设计高扇入、合理扇出(小于7)的函
11、数551.11、 减少函数本身或函数间的递归调用551.12、 降低函数间的耦合度552、函数参数552.1、 明确接口函数参数的合法性检查者552.2、 防止将函数的参数作为工作变量562.3、 避免设计多参数函数,不使用的参数从接口中去掉562.4、 非调度函数应减少或防止控制参数,尽量只使用数据参数572.5、 检查函数所有参数输入的有效性572.6、 检查函数所有非参数输入的有效性,如数据文件、公共变量等572.7、 调用函数时参数类型要一致582.8、 避免使用BOoL参数582.9、 在函数参数中不应使用StatiC存储类标识符582.10、 10、函数参数数量582.11、 宜避
12、免函数参数在调用中未被使用583、函数返回583.1、 对所调用函数的错误返回码要仔细、全面地处理583.2、 函数的返回值要清楚、明了,让使用者不容易忽视错误情况583.3、 函数返回值要与赋值变量类型一致583.4、 对于提供了返回值的函数,在引用时最好使用其返回值583.5、 函数只有一个出口584、可重入函数58深圳市德卡科技有限公司文件编号文件版本Al生效日期软件设计规范发行类别新增修订发行部门研发中心4.1、可重入函数使用局部变量584.2、可重入函数使用全局变量595、函数模块划分605.1、 仔细分析模块的功能,进行函数的划分和组织605.2、 如果多段代码重复做同一件事情,那
13、么在函数的划分上可能存在问题.605.3、 函数内部的代码结构顺序606、循环语句616.1、 循环控制变量的类型应为整型616.2、 循环控制变量应为局部变量616.3、 for循环控制语句中的3个表达式只应和循环控制相关616.4、 for循环不宜只执行一次617、判断语句627.1、不要轻易用条件分支去替换逻辑表达式627.2、switch语句中不应只包含default语句627.3、所有非空的SWitehCaSe子句都应以break语句结束627.4、switch控制表达式不应是一个常量或逻辑表达式627.5、每一个SWitCh语句都应至少有一个CaSe子句627.6、case表达式的
14、类型应与switch控制表达式的类型一致627.7、case表达式的大小不应超过switch控制表达式的大小628、赋值语句628.1、尽量不使用条件赋值语句629、其他注意事项629.1、 避免函数中不必要语句,防止程序中的垃圾代码629.2、 在多任务操作系统的环境下编程,更要注意函数可重入性的构造629.3、 将常用较长变量用宏替代62七、预处理631、宏631.1、 用宏定义表达式时,要使用完备的括号63深圳市德卡科技有限公司文件编号文件版本Al生效日期软件设计规范发行类别新增口修订发行部门研发中心1.2、将宏所定义的多条表达式放在大括号中631.3、 使用宏时,不允许参数发生变化64
15、1.4、 函数类宏调用时参数要完整642、条件编译642.1、 预处理语句“#if”和“痴ndif”不应分散在不同的文件之中642.2、 被包含文件中的“#else、“#elseif、“#endif”不应与父文件中的“#if”匹配642.3、 “#if”表达式中使用的宏应该已经被定义,并且“#if”表达式只能包含整型常量642.4、 宏如果需要被重定义,应该先用Indef”解除前面的定义65八、中断651、中断服务程序不应有返回值652、中断服务程序中不应使用Printf()函数653、对于中断中使用到的非局部变量,在中断处理函数中应对其进行入栈保护.654、调用中断处理程序中的变量要进行开关
16、中断处理655、对于开关中断,要注意成对匹配656、中断服务程序代码要简单化65九、程序可测性651、原则651.1、 统一的调测开关及打印函数651.2、 统一的打印信息串格式651.3、 正式软件产品中应把断言及其它调测代码去掉(即把有关的调测开关关掉)651.4、 用调测开关切换软件的DEBUG版和正式版651. 5、软件DEBUG版和发行版在实现功能上具有一致性661.6、 构造测试环境和测试用例661.7、预先设计程序调测的方法和手段及各种调测开关66L8、调测开关应分为不同级别和类型662、断言662.1、 使用断言来发现软件问题,提高代码可测性66深圳市德卡科技有限公司文件编号文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 规范 标准

链接地址:https://www.desk33.com/p-426281.html