您好,欢迎访问三七文档
1第7章实现7.1编码7.2软件测试基础7.3单元测试7.4集成测试7.5确认测试7.6白盒测试技术7.7黑盒测试技术7.8调试7.9软件可靠性7.10小结2实现包括编码和测试编码是将设计结果翻译成用某种程序设计语言书写的程序测试是对前期所有阶段的复审,横跨软件生命周期的两个阶段,对软件可靠性的影响相当大测试工作量占总体工作量的40%以上,极端条件下相当于其它步骤总成本的3~5倍37.1编码编码的目的:实现人和计算机的通信,指挥计算机按设计者的意志正确的工作程序设计语言的选择对降低编码难度,减少测试量,提高可读性,降低维护难度有很重要的地位高级编程语言优于汇编语言组件编程47.1编码(续)选择程序设计语言的实用标准用户需求(用户负责维护)可使用的编译工具可使用的开发工具工程规模程序员的知识软件可移植性应用领域57.1编码(续)FORTRAN:FormulaTranslation,数值计算功能较强COBOL:CommonbusinessOrientedLanguage,基本语法与英语很类似,适用于商业领域Ada:美国国防部牵头,主要用于机械方面的设计LISP:ListProcessor,一种函数式的语言PROLOG:ProgramminginLogic,主要用于涉及推理等逻辑系统中67.1编码(续)C、汇编还适用于硬件底层(直接对硬件进行控制)VC适用于操作系统和实时系统MicrosoftVisualStidio.net适用于基于Windows操作系统平台的网络开发Java适用于跨系统平台的网络开发77.1编码(续)编码风格(规范)程序内部的文档:标识符(命名)、注释、视觉组织(空格/换行)数据说明:针对复杂数据结构语句构造:标准结构、库函数、可读性括号/“非”条件/嵌套/复杂条件输入输出风格效率:处理机时间/存储容量/输入输出复杂数据结构/嵌套/浮点/不同数据类型8Java编码规范简介编码规范对于程序员而言尤为重要:一个软件的生命周期中,80%的花费在于维护几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码如果你将源码作为产品发存贮,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品9Java编码规范简介(续)文件后缀Java源文件:.javaJava二进制文件:.class常用文件名GNUmakefile:生成软件的首选文件名README:概述特定目录下所含内容的首选文件名10Java编码规范简介(续)开头注释有一个C语言风格的注释,其中列出类名、版本信息、日期和版权声明/**Classname**Versioninformation**Data**Copyrightnotice*/11Java编码规范简介(续)包和引入语句第一个非注释行是包语句,之后跟引入语句packagejava.awtimportjava.awt.peer.CanvasPeer;12Java编码规范简介(续)类和接口声明类/接口文档注释类或接口的声明类/接口实现的注释(包含任何有关整个类或接口的信息)类的(静态)变量(先是类的公共变量,随后是保护变量,再后是包一级别的变量,最后是私有变量)实例变量(先是公共级别的,随是保护级别的,再后是包一级别的,最后是私有级别的)构造器方法(按功能分组)13Java编码规范简介(续)缩进排版4个空格常被作为缩进排版的一个单位(一个制表符等于8个空格,不要空格和制表符混用)行长度尽量避免一行的长度超过80个字符14Java编码规范简介(续)换行当一个表达式无法容纳在一行内时,可依据如下一般规则断开:在一个逗号后面断开在一个操作符前面断开宁可选择较高级别的断开,而非较低级别的断开新的一行应该与上一行同一级别表达式的开头处对齐如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格15Java编码规范简介(续)注释:(Java有两类注释)实现注释:用以注释代码或者实现细节文档注释:从实现自由的角度描述代码的规范注意:频繁的注释有时反映出代码的低质量,当你觉得被迫要加注释的时候,考虑一下午写代码使其更清晰16Java编码规范简介(续)实现注释的格式块注释:用于提供对文件、方法、数据结构和算法的描述。置于每个文件的开始处以及每个方法之前。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。块注释与代码之间应该有一个空行单行注释:短注释可以显示在行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该采用块注释。单行注释之前应该有一个空行17Java编码规范简介(续)实现注释的格式(续)尾端注释:极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进行末注释:注释界定符//可以注释掉整行或者一行中的一部分。一般不用于连续多行的注释文本18Java编码规范简介(续)文档注释:文档注释描述Java的类、接口、构造器、方法以及字段。每个文档注释都会被置于注释定界符/**...*/之中,一个注释对应一个类、接口或成员。该注释应位于声明之前文档注释不能放在一个方法或构造器的定义块中19Java编码规范简介(续)声明每行声明变量的数量推荐一行一个声明,以利于写注释不要将不同类型变量的声明放在同一行(数组和简单变量是不同数据类型)初始化尽量在声明局部变量的同时初始化。唯一不这么做的原因是变量的初始值依赖于某些先前发生的计算20Java编码规范简介(续)声明(续)布局:只在代码块的开始处声明变量,不要在首次用到该变量时才声明之。会妨碍代码在该作用域内的可移植性上述的一个例外for循环的索引变量for(inti=0;imax;i++){...}避免声明的局部变量覆盖上一级声明的变量(不要在内部代码块中声明相同的变量名21Java编码规范简介(续)声明(续)类和接口的声明在方法名与其参数列表之前的左括号(间不要有空格左大括号{位于声明语句同行的末尾右大括号}另起一行,与相应的声明语句对齐空语句的}应紧跟在{之后22Java编码规范简介(续)简单语句每行至多包含一条语句复合语句被括其中的语句应该较之复合语句缩进一个层次左大括号{应位于复合语句起始行的行尾;右大括号}应另起一行并与复合语句首行对齐大括号可以被用于所有语句,包括单个语句,只要这些语句是诸如if-else或for控制结构的一部分。便于添加语句而无需担心由于忘了加括号而引入bug23Java编码规范简介(续)返回语句一个带返回值的return语句不使用小括号(),除非它们以某种方式使返回值更为显见选择语句if(conditoin){statements;}if(conditoin){statements;}else{statements;}if(conditoin){statements;}elseif(condition){statements;}else{statements;}24Java编码规范简介(续)for语句for(initialization;condition;update){statements;}while语句while(conditon){statements;}25Java编码规范简介(续)do-while语句do{statements;}while(condition);26Java编码规范简介(续)switch语句switch(conditon){caseABC:statemtents;/*fallsthrough*/caseDEF:statements;break;caseXYZ:statements;break;default:statements;break;}每当一个case顺着往下执行时(因为没有break语句),通常应在break语句的位置添加注释27Java编码规范简介(续)try-catch语句try{statements;}catch(ExceptionClasse){statements;}28Java编码规范简介(续)空行空行将逻辑相关的代码段分隔开,以提高可读性下列情况应该总是使用两个空行:一个源文件的两个片段之间类声明和接口声明之间下列情况应该总是使用一个空行:两个方法之间方法内的局部变量和方法的第一条语句之间块注释或单行注释之前一个方法内的两个逻辑段之间,用以提高可读性29Java编码规范简介(续)空格——下列应该使用空格:一个紧跟着括号的关键字应该被空格分开while(true)...空格不应该置于方法名与其左括号之间,有助于区分关键字和方法调用空格应该拉于参数列表中逗号的后面所有的二元运算符,除了.,应该使用空格将之与操作数分开(一元操作符和操作数之间不因该加空格,如:负号、自增、自减)a+=(a+b)/(c*d);30Java编码规范简介(续)空格(续)for语句中的表达式应该在分号后加一个空格强制转换符后应该跟一个空格31Java编码规范简介(续)命名规范命名规范使程序更易读,从而更易于理解。它们也可以提供一些有关标识符功能的信息,以助于理解代码类(Classes)命名规则:类名是个名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,如:RUL,HTML)classRaster;classImageSprite;32Java编码规范简介(续)命名规范(续)接口(Interfaces)命名规则:大小写规则与类名相似interfaceRasterDelegate;interfaceStoring;方法(Methods)命名规则:方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写run();runFast();getBackground();33Java编码规范简介(续)命名规范(续)变量(Variables)命名规则:采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写,变量名不应以下划线或美元符号开头。变量名应简短且富于描述。变量名的选用应该易于记忆。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,用于整型;c,d,e用于字符型charc;inti;floatmyWidth;34Java编码规范简介(续)命名规范(续)实例变量(InstanceVariables)大小写规则和变量名相似,在变量名前需要一个下划线String_name;Customer_customer;类常量,应该全部大写,单词间用下划线隔开staticfinalintMIN_WIDTH=4;staticfinalintMAX_WIDTH=999;staticfinalintGET_THE_CPU=1;35Java编码规范简介(续)编程惯例提供对实例以及类变量的访问控制:若没有足够理由,不要把实例或类变量声明为公有引用类变量和类方法:避免用一个对象访问一个类的静态变量和方法。应该用类名替代常量:位于for循环中作为计数器值的数字常量,除了-1,0和1之外,不应被直接写入代码36Java编码规范简介(续)编程惯例(续)变量赋值避免在一个语句中给多个变量赋相同的值不要将赋值运算符用在容易与相等关系运算符混淆的地方不要使用内嵌赋值运算符试图提高运行时的效率37Java编码规范简介(续)编程惯例(续)圆括号:在含有多种运
本文标题:软件工程07
链接地址:https://www.777doc.com/doc-212996 .html