第1页共70页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共70页软件编程规范培训实例与练习第一版第2页共70页第1页共70页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共70页深圳市华为技术有限公司说明本文分为两部分,第一部分为中研《关于规范开发人员设计编码行为、提高软件质量的通知》文件,其中包含来自测试人员总结的大量的包括逻辑类、接口类、维护类和可测试类四个方面的生动实例,是典型的软件编程规范培训实例,亦可供第3页共70页第2页共70页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共70页我司员工自学;第二部分是一个练习,作为软件编程规范教学使用。第4页共70页第3页共70页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第4页共70页案例与练习第一部分第5页共70页第4页共70页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第5页共70页深圳市华为技术有限公司研发管理办公室文件关于规范开发人员设计编码行为、提高软件质量的通知为更有效地贯彻执行《软件编码规范总则》,强化开发人员规范意识,进一步规范开发人员的设计、编码习惯(至少“犯过的错误,不能再犯”),为流程下游部门(如测试部)提供高质量的输出,使下游部门避免低效、重复劳动,特此通知,请各开发部门遵照执行。以下问题由测试部的问题单、案例分类汇总而成,将常见设计、编码问题分为四类:逻辑类、接口类、维护类和可测试性,问题级别为:逻辑类>接口类>维护类>可测试性。本通知中罗列问题如再次出现,将进行通报批评并记入干部部关键事件库。问题分类逻辑类问题(A类)-指设计、编码中出现的计算正确性和一致性、程序逻辑控制等方面出现的问题,在系统中起关键作用,将导致软件死机、功能正常实现等严重问题;接口类问题(B类)-指设计、编码中出现的函数和环境、其他函数、全局/局部变量或数据变量之间的数据/控制传输不匹配的问题,在系统中起重要作用,将导致模块间配合失效等严重问题;维护类问题(C类)-指设计、编码中出现的对软件系统的维护方便程度造成影响的问题,在系统中不起关键作用,但对系统后期维护造成不便或导致维护费用上升;可测试性问题(D类)-指设计、编码中因考虑不周而导致后期系统可测试性差的问题。第6页共70页第5页共70页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第6页共70页处罚办法问题发生率:P=D/SD=DA+0.5DB+0.25DC其中:P-问题发生率D-1个季度内错误总数DA-1个季度内A类错误总数DB-1个季度内B类错误总数DC-1个季度内C类错误总数S-1个季度内收到问题报告单总数1)当D≥3时,如果P≥3%,将进行警告处理,并予以公告;2)当D≥5时,如果P≥5%,将进行罚款处理,并予以公告。第7页共70页第6页共70页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第7页共70页目录一、逻辑类代码问题第5页1、变量/指针在使用前就必须初始化第5页【案例1.1.1】第5页2、防止指针/数组操作越界第5页【案例1.2.1】第5页【案例1.2.2】第6页【案例1.2.3】第7页【案例1.2.4】第8页3、避免指针的非法引用第9页【案例1.3.1】第9页4、变量类型定义错误第10页【案例1.4.1】第10页5、正确使用逻辑与&&、屏蔽&操作符第17页【案例1.5.1】第17页6、注意数据类型的匹配第18页【案例1.6.1】第18页【案例1.6.2】第18页7、用于控制条件转移的表达式及取值范围是否书写正确第20页【案例1.7.1】第20页【案例1.7.2】第21页【案例1.7.3】第22页8、条件分支处理是否有遗漏第24页【案例1.8.1】第24页9、引用已释放的资源第26页【案例1.9.1】第26页10、分配资源是否已正确释放第28页【案例1.10.1】第28页第8页共70页第7页共70页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第8页共70页【案例1.10.2】第29页【案例1.10.3】第30页【案例1.10.4】第32页【案例1.10.5】第33页【案例1.10.6】第35页【案例1.10.7】第38页11、防止资源的重复释放第39页【案例1.11.1】第39页12、公共资源的互斥性和竞用性第40页【案例1.12.1】...