软件工程_幻灯片.ppt
软件工程课件_2023/1/151第1页,共46页,编辑于2022年,星期三目录7.1程序设计语言7.2编码风格7.3程序效率7.4编程安全7.5面向对象设计步骤2023/1/152第2页,共46页,编辑于2022年,星期三编码编码是指把软件设计的结果翻译成计算机可以编码是指把软件设计的结果翻译成计算机可以理解的形式,即用某种程序设计语言书写的理解的形式,即用某种程序设计语言书写的程序。程序。编码是软件设计的结果,程序的质量取决于软编码是软件设计的结果,程序的质量取决于软件设计的质量。件设计的质量。2023/1/153第3页,共46页,编辑于2022年,星期三7.1程序设计语言程序设计语言是人和计算机通信的最基本的工具,程序设计语言的特性不可避免地会影响人的思维和解决问题的方式,会影响人和计算机通信的方式和质量,因此,编码前要选择一种适当的程序设计语言。2023/1/154第4页,共46页,编辑于2022年,星期三7.1.1程序设计语言的分类1.面向机器语言机器语言汇编语言优点:容易实现系统接口缺点:生产率低,容易出错,维护困难。2023/1/155第5页,共46页,编辑于2022年,星期三7.1.1程序设计语言的分类2.高级语言从应用特点分从内在特点分基础语言:如BASIC现代语言:如PASCAL、C专用语言:如APL系统实现语言:如C静态高级语言:如COBOL块结构高级语言:PASCAL动态高级语言:不属于通用语言高级语言2023/1/156第6页,共46页,编辑于2022年,星期三7.1.1程序设计语言的分类2.高级语言机器语言从应用特点分:基础语言通用语言,特点:出现早,应用广泛,有大量软件库,为最广泛的人所熟悉和接受。FORTRANFORTRAN:使用最高的高级语言,它适合于科学计算,缺点是:使用最高的高级语言,它适合于科学计算,缺点是数据类型不丰富,对复杂的数据结构缺乏支持。数据类型不丰富,对复杂的数据结构缺乏支持。COBOLCOBOL:商业数据处理中应用最广的高级语言。:商业数据处理中应用最广的高级语言。BASICBASIC:用于一般数值计算与事务处理,优点是简单易学,具有:用于一般数值计算与事务处理,优点是简单易学,具有交互功能。交互功能。ALGOLALGOL:一种描述计算过程的算法语言。缺点是缺少标准的输:一种描述计算过程的算法语言。缺点是缺少标准的输入输出和结构使用的换名参数入输出和结构使用的换名参数2023/1/157第7页,共46页,编辑于2022年,星期三7.1.1程序设计语言的分类2.高级语言机器语言从应用特点分:现代语言结构化语言,也是通用语言,特点:直接提供结构化的控制结构,具有很强的过程能力和数据结构能力。PASCALPASCAL:第一个系统的体现结构化程序设计概念的现代高级语:第一个系统的体现结构化程序设计概念的现代高级语言。优点是模块清晰,控制结构完备,数据结构和数据类型言。优点是模块清晰,控制结构完备,数据结构和数据类型丰富,表达能力强,可移植性好。丰富,表达能力强,可移植性好。C C:最初为:最初为UNIXUNIX操作系统的主要语言开发的,现成为通用语言。操作系统的主要语言开发的,现成为通用语言。特点:表达简洁,控制结构、数据结构完备、运算符和数据特点:表达简洁,控制结构、数据结构完备、运算符和数据类型丰富,可移植性好强,类型丰富,可移植性好强,编译质量高。编译质量高。AdaAda:迄今为止最完善的面向过程的现代语言。适用于嵌入式计:迄今为止最完善的面向过程的现代语言。适用于嵌入式计算机系统。算机系统。2023/1/158第8页,共46页,编辑于2022年,星期三7.1.1程序设计语言的分类2.高级语言机器语言从应用特点分:专用语言特点:具有为某种特殊应用而设计的独特的语言形式。语言应用范围比较窄。APLAPL:为数据和向量运算设计的简洁而又功能很强的语言,而它:为数据和向量运算设计的简洁而又功能很强的语言,而它几乎不提供结构化的控制结构和数据类型。几乎不提供结构化的控制结构和数据类型。2023/1/159第9页,共46页,编辑于2022年,星期三7.1.1程序设计语言的分类2.高级语言机器语言从内在特点分:系统实现语言为了克服汇编程序设计的困难而从汇编语言发展起来的。特点:提供控制语句和变量类型检验等功能,但是同时也容许程序员直接使用机器操作。C C:2023/1/1510第10页,共46页,编辑于2022年,星期三7.1.1程序设计语言的分类2.高级语言机器语言从内在特点分:静态高级语言提供某些控制语句和变量说明的机制,但是程序员不能直接控制由编译程序生成的机器操作。特点:静态分配存储。COBOLCOBOLFORTRANFORTRAN2023/1/1511第11页,共46页,编辑于2022年,星期三7.1.1程序设计语言的分类2.高级语言机器语言从内在特点分:块结构高级语言特点:提供有限形式的动态存储分配。ALGOLALGOLPASCALPASCAL2023/1/1512第12页,共46页,编辑于2022年,星期三7.1.1程序设计语言的分类2.高级语言机器语言从内在特点分:动态高级语言特点:动态地完成所有存储管理。一般为特殊应用而设计的,不属于通用语言。2023/1/1513第13页,共46页,编辑于2022年,星期三7.1.2程序设计语言的特点程序设计语言是人与计算机交流的媒介,软件工程师应该了解程序设程序设计语言是人与计算机交流的媒介,软件工程师应该了解程序设计语言各方面的特点,以及这些特点对软件质量的影响。计语言各方面的特点,以及这些特点对软件质量的影响。1.1.名字说明名字说明2.2.类型说明类型说明3.3.初始化初始化4.4.程序对象的局部性程序对象的局部性5.5.程序模块程序模块6.6.循环控制结构循环控制结构7.7.分支控制结构分支控制结构8.8.异常处理异常处理9.9.独立编译独立编译2023/1/1514第14页,共46页,编辑于2022年,星期三7.1.2程序设计语言的特点1.1.名字说明:预先说明程序中使用的对象名字,使编译程序能够检查程序中出现的名字的合法名字说明:预先说明程序中使用的对象名字,使编译程序能够检查程序中出现的名字的合法性,从而能帮助程序员发现和改正程序中的错误。性,从而能帮助程序员发现和改正程序中的错误。2.2.类型说明:类型说明与名字说明使紧密相联的,通过类型说明用户定义对象的类型说明:类型说明与名字说明使紧密相联的,通过类型说明用户定义对象的类型,从而确定了该对象的使用方式。编译程序能够发现程序中对某个特定类类型,从而确定了该对象的使用方式。编译程序能够发现程序中对某个特定类型的对象使用不当的错误,有助于减少程序错误。型的对象使用不当的错误,有助于减少程序错误。3.3.初始化:程序设计中最常见的错误之一就是在使用变量之前对没有变量初始化初始化:程序设计中最常见的错误之一就是在使用变量之前对没有变量初始化,为为了减少发生错误的可能性了减少发生错误的可能性,应该使程序员对程序中说明的所有变量初始化应该使程序员对程序中说明的所有变量初始化.4.4.程序对象的局部性程序对象的局部性:程序对象的名字应该在靠近使用他们的地方引入程序对象的名字应该在靠近使用他们的地方引入,并且应该只并且应该只有程序中真正需要他们的那些部分才能访问他们有程序中真正需要他们的那些部分才能访问他们.5.5.程序模块程序模块:块结构语言提供了控制程序对象名字可见性的某些手段块结构语言提供了控制程序对象名字可见性的某些手段,主要使受较内层程序块主要使受较内层程序块中说明的名字不能被较外层的程序块访问中说明的名字不能被较外层的程序块访问.2023/1/1515第15页,共46页,编辑于2022年,星期三7.1.2程序设计语言的特点6.6.循环控制结构循环控制结构:常见的循环控制结构由常见的循环控制结构由FORFOR语句语句,WHILE-,WHILE-DODO语句语句,REPEAT-UNTIL,REPEAT-UNTIL语句语句7.7.分支控制结构分支控制结构:IF:IF型分支语句通常不存在什么实际问题型分支语句通常不存在什么实际问题,多多分支的分支的CASECASE型语句可能存在问题型语句可能存在问题,一一,如果如果CASECASE表达表达式取的值不在预定的范围内式取的值不在预定的范围内,则不能决定应该作的动则不能决定应该作的动作作;二二,在某些程序语言中在某些程序语言中,由由CASECASE表达式选定执行的语句表达式选定执行的语句,取决于所有可能执行的语句的排列次序取决于所有可能执行的语句的排列次序,如果次序错了如果次序错了,便宜和运行时系统不能发现这类错误便宜和运行时系统不能发现这类错误.8.异常处理异常处理:程序运行过程中发生的错误或意外事件称程序运行过程中发生的错误或意外事件称为异常为异常.9.9.独立编译独立编译:独立编译指能分别编译各个程序单元独立编译指能分别编译各个程序单元,然后再把然后再把他们集成位一个完整的程序他们集成位一个完整的程序.2023/1/1516第16页,共46页,编辑于2022年,星期三7.1.3程序设计语言的选择选择标准理想标准应该有理想的模块化机制,以及可读性好的控制结构和数据结构,以使程序容易测试和维护,同时减少软生存周期的总成本.应该使编译程序能够尽可能多地发现程序中的错误,以便于调试和提高软件的可靠性应该有良好的独立编译机制,以降低软件开发和维护的成本.实践标准2023/1/1517第17页,共46页,编辑于2022年,星期三7.1.3程序设计语言的选择选择标准实践标准语言的自身功能系统用户的要求编码和维护成本软件的兼容性可以使用的软件工具软件可移植性开发系统的规模程序设计人员的知识水平2023/1/1518第18页,共46页,编辑于2022年,星期三7.2编码风格编码风格又称程序设计风格或编程风格,编码风格实际上指编程的基本原则。2023/1/1519第19页,共46页,编辑于2022年,星期三7.2.1源程序文档化软件=程序+文档1.标识符的命名:名字应该能够反映它所代表的实际的东西,应具有一定实际意义,使其能够见名知意,有助于程序功能的理解和增强程序的可读性。2.程序的注释:程序中的注释是程序员与程序阅读者之间的通信的重要手段。3.标准的书写格式2023/1/1520第20页,共46页,编辑于2022年,星期三7.2.1源程序文档化2.2.程序的注释:程序中的注释是程序员与程序阅读者之程序的注释:程序中的注释是程序员与程序阅读者之间的通信的重要手段。间的通信的重要手段。1.1.序言性注释:通常位于每个程序模块的开头部分,它给出程序的序言性注释:通常位于每个程序模块的开头部分,它给出程序的整体说明,对于理解程序有引导作用。整体说明,对于理解程序有引导作用。2.2.功能性注释:注释在源程序中,用以描述其后的语句或程序功能性注释:注释在源程序中,用以描述其后的语句或程序段是在做什么工作。段是在做什么工作。对于书写功能性注释,应注意:对于书写功能性注释,应注意:描述一段程序,而不是每个语句描述一段程序,而不是每个语句 利用缩进和空行,使程序与注释容易区别利用缩进和空行,使程序与注释容易区别 注释要正确注释要正确 合适的,有助于记忆的标识符和恰当的注释,可以得到比较好的源合适的,有助于记忆的标识符和恰当的注释,可以得到比较好的源程序内部的文档程序内部的文档 设计的说明,也可以作为注释,嵌入源程序体内。设计的说明,也可以作为注释,嵌入源程序体内。2023/1/1521第21页,共46页,编辑于2022年,星期三7.2.1源程序文档化3.标准的书写格式应用统一的、标准的格式来书写源程序清单,有助于改善可读性。常用的方法:用分层缩进的写法显示嵌套结构层次在注释段周围加上边框注释段与程序段、以及不同的程序段之间插入空行每行只写一条语句书写表达式时适当使用空格或圆括弧作隔离符。2023/1/1522第22页,共46页,编辑于2022年,星期三7.2.2数据说明注意数据说明风格。为了便于理解和维护,必须注意以下几点:数据说明得次序应规范说明的先后次序应固定。如:按常量说明、简单变量和类型说明、数组说明、功用数据块说明、所有的文件说明的顺序说明当用一个语句说明多个变量时,应当对这些变量按照字母的顺序排列对于复杂数据结构,应利用注释说明实现这个数据结构的特点。2023/1/1523第23页,共46页,编辑于2022年,星期三7.2.3语句结构1.使用标准的控制结构在编码阶段,要遵循模块逻辑肿采用单入口、单出口的标准结构的原则,以确保源程序清晰可读。在尽量使用标准结构的同时,避免使用容易引起混淆的结构和语句。避免使用空的ELSE语句和IFTHENIF的语句一行内只写一条语句,病采取适当的缩进格式,使程序的逻辑和功能更加明确。2023/1/1524第24页,共46页,编辑于2022年,星期三7.2.3语句结构2.尽可能使用库函数尽量用公共过程或子程序去代替重复的代码段。用逻辑表达式代替分支嵌套。尽量减少使用“否定”条件的条件语句。同时避免采用过于复杂的条件测试。3.首先应当考虑可读性:程序编写要做到可读性第一,效率第二。4.注意GOTO语句的使用:不要使GOTO语句相互交叉避免不必要的的转移程序应当简单,避免使用GOTO语句。5.其他需要注意的问题2023/1/1525第25页,共46页,编辑于2022年,星期三7.2.3语句结构5.其他需要注意的问题其他需要注意的问题避免使用避免使用ELSEGOTOELSEGOTO和和ELSERETURNELSERETURN结构结构避免过多的循环嵌套和条件嵌套避免过多的循环嵌套和条件嵌套数据结构要有利于程序的简化数据结构要有利于程序的简化要模块化,使模块功能尽可能单一要模块化,使模块功能尽可能单一对递归定义的数据结构尽量使用递归过程对递归定义的数据结构尽量使用递归过程不要修补不好的程序,要重新编写,也不要片面地追求代码的复不要修补不好的程序,要重新编写,也不要片面地追求代码的复用,要重新组织。用,要重新组织。利用信息隐蔽,确保每个模块的独立性利用信息隐蔽,确保每个模块的独立性对太大的程序,要分块编写、测试、然后再集成对太大的程序,要分块编写、测试、然后再集成注意计算机浮点数运算的特点。注意计算机浮点数运算的特点。避免不恰当地追求程序效率,在改进前,要作出有关效率地定量估避免不恰当地追求程序效率,在改进前,要作出有关效率地定量估计。计。k k确保所有变量在使用前都进行初始化确保所有变量在使用前都进行初始化l l遵循国家标准遵循国家标准2023/1/1526第26页,共46页,编辑于2022年,星期三7.2.4输入输出输入输出信息是与用户的使用直接相关的。输入输出的方式和格式应当尽量作到对用户友好,输入输出信息是与用户的使用直接相关的。输入输出的方式和格式应当尽量作到对用户友好,尽可能方便用户地使用。尽可能方便用户地使用。设计和程序编写应考虑下列原则:设计和程序编写应考虑下列原则:对所有地输入数据进行检验,从而识别错误的输入,以保证数据的有效性对所有地输入数据进行检验,从而识别错误的输入,以保证数据的有效性检查输入项的各种重要组合的合理性,必要时报告输入状态信息检查输入项的各种重要组合的合理性,必要时报告输入状态信息使得输入的步骤和操作尽可能简单,并保持简单的输入格式使得输入的步骤和操作尽可能简单,并保持简单的输入格式输入数据时,应允许使用自由格式输入输入数据时,应允许使用自由格式输入应允许默认值应允许默认值输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目在以交互式输入输出方式进行输入时,要在屏幕上使用提示符明确提示交互输在以交互式输入输出方式进行输入时,要在屏幕上使用提示符明确提示交互输入的请求,指明可使用选择项的种类和取值范围。入的请求,指明可使用选择项的种类和取值范围。当程序语言对输入格式有严格要求时,应保持输入格式与输入语句要求的一致当程序语言对输入格式有严格要求时,应保持输入格式与输入语句要求的一致性性给所有的输出加注释,并设计输出报表的格式。给所有的输出加注释,并设计输出报表的格式。2023/1/1527第27页,共46页,编辑于2022年,星期三作业1.评价、选择可用编程语言的准则是什么?2.编码风格有哪几个方面?分别需要注意哪些问题?2023/1/1528第28页,共46页,编辑于2022年,星期三7.3程序效率程序效率:指程序的执行速度及程序占用的存储空间。程序编码是提高运行速度和节省存储的重要阶段。2023/1/1529第29页,共46页,编辑于2022年,星期三7.3程序效率1.有关程序效率的几条准则效率是一个性能要求,目标值应当在需求分析阶段给出。软件效率以需求为准,不应以人力所及为准。好的设计可以提高效率程序的效率与程序的简单性无关2023/1/1530第30页,共46页,编辑于2022年,星期三7.3程序效率2.2.算法对效率的影响算法对效率的影响 源程序的效率与详细设计阶段确定的算法的效率直接相关。源程序的效率与详细设计阶段确定的算法的效率直接相关。在详细设计翻译转换成源程序代码后,算法效率反映为程在详细设计翻译转换成源程序代码后,算法效率反映为程序的执行速度和存储容量的要求。序的执行速度和存储容量的要求。转换的指导原则:转换的指导原则:1)1)在编程前,尽可能化简有关的算术表达式和逻辑表达式在编程前,尽可能化简有关的算术表达式和逻辑表达式2)2)仔细检查算法中的嵌套的循环,尽可能将某些语句或表达式移到仔细检查算法中的嵌套的循环,尽可能将某些语句或表达式移到循环外面循环外面3)3)尽量避免使用多维数组尽量避免使用多维数组4)4)尽量避免使用指针和复杂的表达式尽量避免使用指针和复杂的表达式5)5)采用快速的算术运算采用快速的算术运算6)6)不要混淆数据类型,避免在表达式中出现类型混杂不要混淆数据类型,避免在表达式中出现类型混杂7)7)尽量采用整数算术表达式和布尔表达式尽量采用整数算术表达式和布尔表达式8)8)选用等效的高效率算法选用等效的高效率算法2023/1/1531第31页,共46页,编辑于2022年,星期三7.3程序效率等效算法:例求指定数MAX以内的全部素数,并打印出来相关说明:素数概念:就是仅能被素数概念:就是仅能被1 1和它自身整除的整数。和它自身整除的整数。判定一个整数判定一个整数n n是否为素数就是要判定整数是否为素数就是要判定整数n n能否被除能否被除1 1和它自身之和它自身之外的任意整数整除,外的任意整数整除,若都不能整除,则若都不能整除,则n n为素数。为素数。2023/1/1532第32页,共46页,编辑于2022年,星期三7.3程序效率算法:对于一个数i,程序执行依次取从2到i的数与i相除,是否能整除,若能整除,则不是素数,若不能整除,则是素数。等效算法:对于一个数i,程序执行依次取从2到i/2的数与i相除(i i肯定不能被超过肯定不能被超过i/2i/2的数整除)的数整除),是否能整除,若能整除,则不是素数,若不能整除,则是素数。2023/1/1533第33页,共46页,编辑于2022年,星期三7.3程序效率3.影响存储器效率的因素在大中型计算机系统中,存储效率与操作系统的分页功能直接有关。采用结构化程序设计,将程序功能合理分块,使每个模块或一组密切相关模块的程序体积大小与每页的容量相匹配,可减少页面调度,减少内外存交换,提高存储效率。在微型计算机系统中,要选择可生成较短目标代码且存储压缩性能优良的编译程序,有时需要采用汇编程序。2023/1/1534第34页,共46页,编辑于2022年,星期三7.3程序效率4.4.影响输入输出的因素影响输入输出的因素 输入输出的类型:面向操作员的输入输出;面向设备的输输入输出的类型:面向操作员的输入输出;面向设备的输入输出。入输出。提高输入输出效率的指导原则:提高输入输出效率的指导原则:1)1)输入输出的请求应当最小化输入输出的请求应当最小化2)2)对所有的输入输出操作,安排适当的缓冲区,以减少频繁的信息交换对所有的输入输出操作,安排适当的缓冲区,以减少频繁的信息交换3)3)对辅助存储,选择尽可能简单的,可接受的存取方式对辅助存储,选择尽可能简单的,可接受的存取方式4)4)对辅助存储的输入输出,应当成块传送对辅助存储的输入输出,应当成块传送5)5)对终端或打印机的输入输出,应考虑设备特性,改善输入输出的质量和速度对终端或打印机的输入输出,应考虑设备特性,改善输入输出的质量和速度6)6)任何不容易理解的,对改善输入输出效果关系不大的措施都是不可取的任何不容易理解的,对改善输入输出效果关系不大的措施都是不可取的7)7)不应该为追求所谓超高效的输入输出而损害程序的可理解性不应该为追求所谓超高效的输入输出而损害程序的可理解性8)8)良好的输入输出程序设计风格对提高输入输出效率会有明显的效果。良好的输入输出程序设计风格对提高输入输出效率会有明显的效果。2023/1/1535第35页,共46页,编辑于2022年,星期三7.4编程安全提高软件质量和可靠性的技术分类:避开错误技术:开发的过程中不让差错潜入软件的技术。容错技术:容错技术,即对某些无法避开的差错,使其影响减至最小2023/1/1536第36页,共46页,编辑于2022年,星期三7.4编程安全1.冗余程序设计:硬件冗余:提供额外的元件或系统,使其与主系统并行工作。让连接的所有元件都并行工作,当有一个元件出现故障时,它就退出系统,而由冗余元件接续它的工作,维护系统的运转,有时也称为自动重组结构系统最初运行时,由原始元件工作,当该元件发生故障时,由检测线路把备用元件接上,使系统运转,有时候也称为冷冗余或被动冗余。软件冗余:2023/1/1537第37页,共46页,编辑于2022年,星期三7.4编程安全1.冗余程序设计:软件冗余:要解决一个问题必须设计出两个不同的程序,包括采用不同的算法和设计,编程人员也应该不同。采用冗余程序设计表面看使开发费用增加到单位程序的两倍,而实际上可能小于1.5倍。2023/1/1538第38页,共46页,编辑于2022年,星期三7.4编程安全2.防错程序设计:防错程序设计的基本思想:为了避免和纠正在设计阶段或编码时的错误,在编码过程中有意识地在程序中加进一些错误检查的措施。防错程序设计分类:主动式防错程序设计被动式防错程序设计2023/1/1539第39页,共46页,编辑于2022年,星期三7.4编程安全2.1主动式防错程序设计:周期性的对整个程序或数据库进行搜查或在空闲时搜查异常情况。主动式程序设计可在处理输入信息期间使用,也可在系统空闲时间或等待下次输入时使用。内存检查:标志检查:反向检查:状态检查;连接检查:时间检查:其他检查:2023/1/1540第40页,共46页,编辑于2022年,星期三7.4编程安全内存检查:如果在内存的某些块中存放了一些具有某种类型和范内存检查:如果在内存的某些块中存放了一些具有某种类型和范围的数据,则可对他们做经常性的检查。围的数据,则可对他们做经常性的检查。标志检查:如果系统的状态是用某些标志指示的,可对这些标志做标志检查:如果系统的状态是用某些标志指示的,可对这些标志做单独检查。单独检查。反向检查:有些从一种代码翻译成另一种代码或从一种系反向检查:有些从一种代码翻译成另一种代码或从一种系统翻译成另外一种系统的数据或变量值,可以采用反向检统翻译成另外一种系统的数据或变量值,可以采用反向检查。查。状态检查;对于某些具有多个操作状态的复杂系统,若用某些特定状态检查;对于某些具有多个操作状态的复杂系统,若用某些特定的存储值来表示这些状态,则可通过单独检查存储值来验证系统的的存储值来表示这些状态,则可通过单独检查存储值来验证系统的操作状态。操作状态。连接检查:当使用链表结构时,检查链表的连接情况连接检查:当使用链表结构时,检查链表的连接情况时间检查:已知道完成某项计算所需要的最大时间,则可时间检查:已知道完成某项计算所需要的最大时间,则可以用定时器来监视这个时间以用定时器来监视这个时间其他检查:数据结构、操作序列,定时等。其他检查:数据结构、操作序列,定时等。2023/1/1541第41页,共46页,编辑于2022年,星期三7.4编程安全2.12.1被动式防错程序设计:必须等到某个输入后才能进行检查,被动式防错程序设计:必须等到某个输入后才能进行检查,也就是达到检查点时,才能对程序的某些部分进行检查。也就是达到检查点时,才能对程序的某些部分进行检查。来自外部设备的输入数据,包括范围、属性是否正确;来自外部设备的输入数据,包括范围、属性是否正确;其他程序所提供的数据是否正确;其他程序所提供的数据是否正确;数据库中的数据,包括数组、文件、结构、记录是否正确;数据库中的数据,包括数组、文件、结构、记录是否正确;操作员的输入,包括输入的性质,顺序是否正确;操作员的输入,包括输入的性质,顺序是否正确;栈的深度是否正确;栈的深度是否正确;数组界限是否正确;数组界限是否正确;表达式中是否出现零分母的情况;表达式中是否出现零分母的情况;正在运行的程序版本是否式所期望的(包括最后系统重新组合的正在运行的程序版本是否式所期望的(包括最后系统重新组合的日期)日期)通过其他程序或外部设备的输出数据是否正确。通过其他程序或外部设备的输出数据是否正确。2023/1/1542第42页,共46页,编辑于2022年,星期三匈牙利命名法匈牙利命名法 匈牙利命名法是一名匈牙利程序员发明的,他在微软工作了多年。此命名法就是通过微软的各种产品和文档传出来的。多数有经验的程序员,不管他们用的是哪门儿语言,都或多或少在使用它。这种命名法的基本原则是:变量名属性类型对象描述变量名属性类型对象描述即一个变量名是由三部分信息组成,这样,程序员很容易理解变量的类型、用途,而且便于记忆。2023/1/1543第43页,共46页,编辑于2022年,星期三匈牙利命名法匈牙利命名法 属性部分:全局变量:g_常量:c_类成员变量:m_类型部分:指针:p句柄:h布尔型:b浮点型:f无符号:u2023/1/1544第44页,共46页,编辑于2022年,星期三匈牙利命名法匈牙利命名法 描述部分:初始化:Init临时变量:Tmp目的对象:Dst源对象:Src窗口:Wnd下边举例说明:hwnd:h表示句柄,wnd表示窗口,合起来为“窗口句柄”。m_bFlag:m表示成员变量,b表示布尔,合起来为:“某个类的成员变量,布尔型,是一个状态标志”。2023/1/1545第45页,共46页,编辑于2022年,星期三2023/1/1546第46页,共46页,编辑于2022年,星期三