SE11程序设计语言及编码.ppt
《SE11程序设计语言及编码.ppt》由会员分享,可在线阅读,更多相关《SE11程序设计语言及编码.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程软件工程引言引言q软件工程软件工程编码阶段的任务是将详细设计翻译成计编码阶段的任务是将详细设计翻译成计算机可以算机可以“理解理解”并且最终可运行的代码并且最终可运行的代码。q根据基本机制可将程序设计语言分为过程式程序根据基本机制可将程序设计语言分为过程式程序设计语言、函数式程序设计语言、逻辑程序设计设计语言、函数式程序设计语言、逻辑程序设计语言和面向对象程序设计语言四类。语言和面向对象程序设计语言四类。q编码阶段不应单纯追求编码效率,而应全面考虑编码阶段不应单纯追求编码效率,而应全面考虑编写程序、测试程序、说明程序和修改程序等各编写程序、测试程序、说明程序和修改程序等各项工作。项工作。
2、q影响编码质量的因素包括影响编码质量的因素包括编程语言编程语言、编程准则编程准则和和编程风格编程风格,它们对程序的可靠性、可读性、可测,它们对程序的可靠性、可读性、可测试性和可维护性都将产生深远的影响。试性和可维护性都将产生深远的影响。q通常把通常把编码和测试统称为实现编码和测试统称为实现。q编码编码(Coding)(Coding):把软件设计翻译成计算机可以把软件设计翻译成计算机可以理解的形式理解的形式用某种程序设计语言书写的程序用某种程序设计语言书写的程序q编码阶段涉及的问题编码阶段涉及的问题v语言选择语言选择v编码风格编码风格v编程准则编程准则v程序效率程序效率引言引言n目的目的用用选选
3、定定的的程程序序设设计计语语言言将将模模块块的的过过程程性性描描述述翻译为用该语言书写的源程序翻译为用该语言书写的源程序 编码编码模块的过程性描述模块的过程性描述源程序源程序(不可执行的不可执行的)(可执行的)(可执行的)编码概述编码概述n 编码的过程编码的过程n熟悉所选语言的功能和程序开发环境熟悉所选语言的功能和程序开发环境 n仔细阅读设计文档详细设计仔细阅读设计文档详细设计 n弄清要编码的模块的外部接口与内部过程弄清要编码的模块的外部接口与内部过程 n 对编码产生的源程序的要求对编码产生的源程序的要求n正确可靠正确可靠n简明清晰简明清晰n有较高的执行效率有较高的执行效率编码概述编码概述n
4、效率与清晰是一对矛盾的要求效率与清晰是一对矛盾的要求n要优先考虑程序的清晰性和可理解性要优先考虑程序的清晰性和可理解性对编码的有关说明对编码的有关说明编码编码要求要求清晰第一清晰第一(对大多数模块对大多数模块)效率第一效率第一(对个别模块对个别模块)用用单入单入/单出单出保证保证控制流的直线性控制流的直线性用用限制限制GOTO保证保证控制流的局部性控制流的局部性用用GOTO与其它技巧与其它技巧消除重复编码消除重复编码编码概述编码概述n设计是编码的先导,要复审设计设计是编码的先导,要复审设计n编码要熟悉所用的语言编码要熟悉所用的语言n要恰倒好处利用编程语言的特点要恰倒好处利用编程语言的特点n测试
5、阶段也要编写一些测试程序测试阶段也要编写一些测试程序对编码的有关说明对编码的有关说明编码概述编码概述编程标准编程标准q人们总是希望编制人们总是希望编制清晰、紧凑、高效清晰、紧凑、高效的程序的程序,但但这些特性在编码时往往互相这些特性在编码时往往互相矛盾矛盾,一般应依次考一般应依次考虑下列原则虑下列原则:(1)编制易于修改、维护的代码编制易于修改、维护的代码主要措施是在模块化和面向对象详细设计的主要措施是在模块化和面向对象详细设计的基础上基础上,进一步按属性划分程序。进一步按属性划分程序。(2)编制易于测试的代码编制易于测试的代码一般来说一般来说,人们总是通过运用条件编译语句尽人们总是通过运用条
6、件编译语句尽早设计出测试用例、采用统一的命名规则管理早设计出测试用例、采用统一的命名规则管理这些测试用例并适时地进行回归测试等一系列这些测试用例并适时地进行回归测试等一系列措施提高程序的可测试性。措施提高程序的可测试性。编程标准(续)编程标准(续)(3)必须将编程与编文档的工作统一开来。一个程序必须将编程与编文档的工作统一开来。一个程序段的文档应包括下列内容段的文档应包括下列内容:代码的功能代码的功能;代码的完成者代码的完成者;代码在整个软件系统中的位置代码在整个软件系统中的位置;代码编制、复审的时间代码编制、复审的时间;保留代码的原因保留代码的原因;代码中如何使用数据结构和算法。代码中如何使
7、用数据结构和算法。(4)编程中采用统一的标准和约定编程中采用统一的标准和约定,降低程序复杂性降低程序复杂性(5)限定每一层的副作用限定每一层的副作用,减少耦合度减少耦合度(6)尽可能地重用尽可能地重用编码的风格编码的风格n追求追求“聪明聪明”和和“技巧技巧”提倡提倡“简明简明”和和“直接直接”n使用标准的控制结构使用标准的控制结构 n清晰的前提下求取效率清晰的前提下求取效率 nMake it right before you make it faster.nMake it clear before you make it faster.nKeep it right when you make
8、it faster.(求快不忘保持程序正确)求快不忘保持程序正确)nKeep it simple to make it faster.(保持程序简单以求快)保持程序简单以求快)nDont sacrifice clarity for“efficiency”.(书写清楚,不要为书写清楚,不要为“效率效率”牺牲清楚)牺牲清楚)q源程序代码的逻辑简明清晰、易读易懂是好程源程序代码的逻辑简明清晰、易读易懂是好程序的一个重要标准序的一个重要标准q程序具有良好的风格包括:程序具有良好的风格包括:v源程序文档化源程序文档化v数据说明数据说明v语句结构语句结构v输入输入/输出方法输出方法q同时要考虑设计出的程序
9、的执行效率问题同时要考虑设计出的程序的执行效率问题编码的风格编码的风格(1)(1)符号名的命名符号名的命名 符号名即标识符,包括模块名、变量名、常量符号名即标识符,包括模块名、变量名、常量名、标号名、子程序名、数据区名以及缓冲区名名、标号名、子程序名、数据区名以及缓冲区名等等 这些名字应这些名字应能反映它所代表的实际东西,应有能反映它所代表的实际东西,应有一定实际意义一定实际意义 例如,表示次数的量用例如,表示次数的量用TimesTimes,表示总量的用,表示总量的用TotalTotal,表示平均值的用,表示平均值的用AverageAverage,表示和的量用,表示和的量用SumSum等等 应
10、当选择精炼的意义明确的名字应当选择精炼的意义明确的名字。必要时可使。必要时可使用缩写名字,但这时要注意缩写规则要一致,并且用缩写名字,但这时要注意缩写规则要一致,并且要给每一个名字加注释要给每一个名字加注释1 1、源程序文档化、源程序文档化编码的风格编码的风格(2)(2)程序的注释程序的注释 夹在程序中的注释是程序员与日后的程序读夹在程序中的注释是程序员与日后的程序读者之间通信的重要手段。者之间通信的重要手段。注释决不是可有可无的。注释决不是可有可无的。一些正规的程序文本中,注释行的数量占到一些正规的程序文本中,注释行的数量占到整个源程序的整个源程序的1 13 3到到1 12 2,甚至更多。,
11、甚至更多。注释分为注释分为序言性注释序言性注释和和功能性注释功能性注释。编码的风格编码的风格 通常置于每个程序模块的开头部分,它应当通常置于每个程序模块的开头部分,它应当给出程序的给出程序的整体说明整体说明。有关项目包括:。有关项目包括:程序标题;程序标题;有关本模块功能和目的的说明;有关本模块功能和目的的说明;主要算法;主要算法;接口说明:包括调用形式,参数描述,子程序清单;接口说明:包括调用形式,参数描述,子程序清单;有关数据描述:重要的变量及其用途,约束或限制条件,有关数据描述:重要的变量及其用途,约束或限制条件,以及其它有关信息;以及其它有关信息;模块位置:在哪一个源文件中,或隶属于哪
12、一个软件包模块位置:在哪一个源文件中,或隶属于哪一个软件包开发简历:模块设计者,复审者,复审日期,修改日期开发简历:模块设计者,复审者,复审日期,修改日期及有关说明等。及有关说明等。1)1)序言性注释序言性注释编码的风格编码的风格 嵌在源程序体中,用以描述其后的语句或程嵌在源程序体中,用以描述其后的语句或程序段是在序段是在做什么做什么工作,或是执行了下面的语句会工作,或是执行了下面的语句会怎么样。而怎么样。而不要解释下面不要解释下面怎么做怎么做。v要点:要点:描述一段程序,而不是每一个语句描述一段程序,而不是每一个语句用缩进、空行或加框,使程序与注释容易区用缩进、空行或加框,使程序与注释容易区
13、别别注释要正确注释要正确2)2)功能性注释功能性注释编码的风格编码的风格例如,例如,/*ADD AMOUNT TO TOTAL*/*ADD AMOUNT TO TOTAL*/TOTAL=AMOUNTTOTAL=AMOUNTTOTALTOTAL此注释不好。此注释不好。如果注明把月销售额计入年度总额,便使读者如果注明把月销售额计入年度总额,便使读者理解了下面语句的意图:理解了下面语句的意图:/*ADD MONTHLY-SALES TO ANNUAL-TOTAL*/*ADD MONTHLY-SALES TO ANNUAL-TOTAL*/TOTAL=AMOUNTTOTAL=AMOUNTTOTALTOT
14、AL编码的风格编码的风格(3)(3)视觉组织(空格、空行和移行)视觉组织(空格、空行和移行)恰当地利用空格,可以突出运算的优先性,避免恰当地利用空格,可以突出运算的优先性,避免发生运算的错误。发生运算的错误。自然的程序段之间可用空行隔开。自然的程序段之间可用空行隔开。移行也叫做向右缩格。移行也叫做向右缩格。对于选择语句和循环语句,把其中的程序段语句对于选择语句和循环语句,把其中的程序段语句向右做阶梯式移行。使程序的逻辑结构更加清晰。向右做阶梯式移行。使程序的逻辑结构更加清晰。编码的风格编码的风格例如,两重选择结构嵌套,写成下面的移行形式,例如,两重选择结构嵌套,写成下面的移行形式,层次就清楚得
15、多。层次就清楚得多。for(i=1 for(i=1;i=ni=n;i+)i+)for(j=1 for(j=1;j=nj=n;j+)j+)aij aiji*10+ji*10+j;编码的风格编码的风格 在设计阶段已经确定了数据结构的组织及其在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注意数据说明的复杂性。在编写程序时,则需要注意数据说明的风格。风格。为了使程序中数据说明更易于理解和维护,为了使程序中数据说明更易于理解和维护,必须注意以下几点:必须注意以下几点:数据说明的次序数据说明的次序应当规范化应当规范化说明语句中说明语句中变量安排变量安排有序化有序化使用注释使用注释说明复
16、杂数据结构说明复杂数据结构2 2、数据说明、数据说明编码的风格编码的风格(1)(1)数据说明的次序应当规范化数据说明的次序应当规范化 数据说明数据说明次序规范化次序规范化,使数据属性容易查找,使数据属性容易查找,也有利于测试,排错和维护。也有利于测试,排错和维护。原则上,数据说明的次序与语法无关,其次原则上,数据说明的次序与语法无关,其次序是任意的。但出于阅读、理解和维护的需要,序是任意的。但出于阅读、理解和维护的需要,最好使其规范化,使说明的先后次序固定。最好使其规范化,使说明的先后次序固定。编码的风格编码的风格(2)(2)说明语句中变量安排有序化说明语句中变量安排有序化例如,在例如,在FO
17、RTRANFORTRAN程序中数据说明次序程序中数据说明次序常量说明常量说明简单变量类型说明简单变量类型说明数组说明数组说明公用数据块说明公用数据块说明所有的文件说明所有的文件说明在类型说明中还可进一步要求。例如,可按如下顺序排列:在类型说明中还可进一步要求。例如,可按如下顺序排列:整型量说明整型量说明实型量说明实型量说明字符量说明字符量说明逻辑量说明逻辑量说明编码的风格编码的风格 当多个变量名在一个说明语句中说明时,应当当多个变量名在一个说明语句中说明时,应当对这些变量按字母的顺序排列。对这些变量按字母的顺序排列。带标号的全程数据带标号的全程数据(如如FORTRANFORTRAN的公用块的公
18、用块)也应当按字母的顺序排列。也应当按字母的顺序排列。例如,把例如,把 integer integer s sizeize,l lengthength,w widthidth,c costost,p pricerice写成:写成:integer integer c costost,l lengthength,p pricerice,s sizeize,w widthidth编码的风格编码的风格(3)(3)使用注释说明复杂数据结构使用注释说明复杂数据结构 如果设计了一个复杂的数据结构,应当使用如果设计了一个复杂的数据结构,应当使用注释来说明在程序实现时这个数据结构的固有特注释来说明在程序实现时这
19、个数据结构的固有特点。点。例如,对链表结构和用户自定义的数据类型,例如,对链表结构和用户自定义的数据类型,都应当在注释中做必要的补充说明。都应当在注释中做必要的补充说明。编码的风格编码的风格 在设计阶段确定了软件的逻辑流结构,但构在设计阶段确定了软件的逻辑流结构,但构造单个语句则是编码阶段的任务。造单个语句则是编码阶段的任务。语句构造力求语句构造力求简单、直接,不能为了片面追求效率而使语句复简单、直接,不能为了片面追求效率而使语句复杂化。杂化。(1)(1)在一行内只写一条语句在一行内只写一条语句 在一行内只写一条语句,并且采取适当的移在一行内只写一条语句,并且采取适当的移行格式,使程序的逻辑和
20、功能变得更加明确。行格式,使程序的逻辑和功能变得更加明确。3 3、语句结构、语句结构编码的风格编码的风格(2)(2)程序编写首先应当考虑清晰性程序编写首先应当考虑清晰性 程序编写首先应当考虑清晰性程序编写首先应当考虑清晰性,不要刻意追求不要刻意追求技巧性技巧性,使程序编写得过于紧凑。,使程序编写得过于紧凑。例如,有一个用例如,有一个用C C语句写出的程序段:语句写出的程序段:AI=AIAI=AIATAT;AT=AI AT=AIATAT;AI=AI AI=AIATAT;此段程序可能不易看懂,有时还需用实际数据试验此段程序可能不易看懂,有时还需用实际数据试验一下。一下。编码的风格编码的风格实际上,
21、这段程序的功能就是交换实际上,这段程序的功能就是交换AIAI和和ATAT中的中的内容。目的是为了节省一个工作单元。如果改一下:内容。目的是为了节省一个工作单元。如果改一下:WORK=AT WORK=AT;AT=AI AT=AI;AI=WORK AI=WORK;就能让读者一目了然了。就能让读者一目了然了。编码的风格编码的风格(3)(3)程序要能直截了当地说明程序员的用意。程序要能直截了当地说明程序员的用意。程序编写得要简单,写清楚,直截了当地说明程序编写得要简单,写清楚,直截了当地说明程序员的用意。例如,程序员的用意。例如,for(i=1for(i=1;i=ni=n;i+)i+)for(j=1
22、for(j=1;j=nj=n;j+)j+)vij vij(i(ij)*(jj)*(ji)i)编码的风格编码的风格除法运算除法运算()在除数和被除数都是整型量时,其结在除数和被除数都是整型量时,其结果只取整数部分,而得到整型量。果只取整数部分,而得到整型量。当当i ij j时,时,i/j=0i/j=0 当当j ji i时,时,j/i=0j/i=0得到的数组得到的数组 当当ijij时,时,vij=(ivij=(ij)*(jj)*(ji)=0i)=0 当当i ij j时,时,vij=(ivij=(ij)*(jj)*(ji)=1i)=1这样得到的结果,这样得到的结果,v v是一个单位矩阵。是一个单位矩
23、阵。编码的风格编码的风格写成以下的形式,就能让读者直接了解程序编写者写成以下的形式,就能让读者直接了解程序编写者的意图。的意图。for(ifor(i1 1;i=ni=n;i+)i+)for(j for(j1 1;j=nj=n;j+)j+)if(i=j)vij if(i=j)vij;else else vij vij;编码的风格编码的风格(4)(4)除非对效率有特殊的要求,程序编写要做到除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二。清晰第一,效率第二。(5)(5)首先要保证程序正确,然后才要求提高速度。首先要保证程序正确,然后才要求提高速度。(6)(6)避免使用临时变量而使可读性下降
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SE11 程序设计语言 编码
限制150内